Given the head
of a linked list, determine if the linked list is a palindrome and return True
if it is, False
otherwise. For added difficulty, find an algorithm that runs in O(n)
and uses O(1)
space.
Given two arrays, nums1
and nums2
, return the intersection of those arrays in any order.
The easiest way I was able to come up with was to sort the arrays first and then look at the beginning of the arrays. If both are equal, add the element to the output and pop the first element from each array. Otherwise, pop the smaller element of both arrays. Repeat this until one of the arrays is empty at which point there can be no more intersecting elements.
Given a number n
, check if this number is a power of three, that is that it can be represented by 3^x
.
A straightforward solution looks as follows. Multiply by 3
until we reach n
. If we’re greater than n
, return False
, and True
otherwise.
class Solution:
def isPowerOfThree(self, n: int) -> bool:
if n <= 0:
return False
x = 1
while x < n:
x *= 3
return x == n
Given a n*n
matrix, find the kth
smallest element. Each row in the matrix is sorted in ascending order and independent of the other rows. Do not use O(n*n)
space when solving this. One example matrix looks like this:
1 5 9
10 11 13
12 13 15
For k = 8 return 13 because 13 is the 8th smallest element.
Given a head
of a list with pointers to next
and a random
element, copy the list to a new list without any random pointers pointing to the old list.
# Definition for a Node.
class Node:
def __init__(self, x: int, next: 'Node' = None, random: 'Node' = None):
self.val = int(x)
self.next = next
self.random = random