Skip to content

Instantly share code, notes, and snippets.

View siddarthsreeni's full-sized avatar

Siddarth siddarthsreeni

  • Amazon
View GitHub Profile
@siddarthsreeni
siddarthsreeni / 2NumbersAddToK.py
Created April 16, 2023 06:42
Given a list of numbers and a number k, return whether any two numbers from the list add up to k. For example, given [10, 15, 3, 7] and k of 17, return true since 10 + 7 is 17.
def find_number(arr, k):
arr_set = set(arr) # O(N)
for ele in arr: # O(N)
if (k-ele) in arr_set:
return True
return False
print(find_number([1,2,3,4,10,123,12], 14)) # True 12 + 2 = 14
print(find_number([1,2,3,4,10,123], 1114)) # False
@siddarthsreeni
siddarthsreeni / kClosestToP.py
Created August 17, 2021 17:35
Given a list of points, an interger k, and a point p, find the k closest points to p.
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __repr__(self):
return f"({self.x}, {self.y})"
def closest_points(points, k, p):
pts = {}
@siddarthsreeni
siddarthsreeni / duplicateSubtree.py
Created August 15, 2021 17:13
Hi, here's your problem today. This problem was recently asked by Uber: Given a binary tree, find all duplicate subtrees (subtrees with the same value and same structure) and return them as a list of list [subtree1, subtree2, ...] where subtree1 is a duplicate of subtree2 etc.
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def inorder(node, visited={}):
if node is not None:
s = "(" + inorder(node.left, visited) + str(node.val) + inorder(node.right, visited) + ")"
@siddarthsreeni
siddarthsreeni / sortColors.py
Created August 14, 2021 15:25
Given an array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue. Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively. Note: You are not suppose to use the library’s sort function for this p…
class Solution:
def sortColors(self, nums):
s = 0
for i in range(0, len(nums)):
if nums[i] != 0:
s = i
break
for i in range(s, len(nums)):
if nums[i] == 0 and i!=s:
tmp = nums[i]
@siddarthsreeni
siddarthsreeni / traversalIterative.py
Created August 12, 2021 17:19
Given a binary tree, perform an in-order traversal both recursively and iteratively.
class Node:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def inorder(node):
if node:
inorder(node.left)
@siddarthsreeni
siddarthsreeni / removeDups.py
Created August 10, 2021 18:11
Given a linked list, remove all duplicate values from the linked list. For instance, given 1 -> 2 -> 3 -> 3 -> 4, then we wish to return the linked list 1 -> 2 -> 4.
class Node(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
def __str__(self):
if not self.next:
return str(self.val)
return str(self.val) + " " + str(self.next)
class Solution(object):
@siddarthsreeni
siddarthsreeni / arrayToBST.py
Created August 8, 2021 17:20
Given a sorted array, convert it into a binary search tree.
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
if len(nums) ==1 :
return TreeNode(nums[0])
@siddarthsreeni
siddarthsreeni / duplicates.py
Created August 5, 2021 16:49
Given an array of size n, and all values in the array are in the range 0 to n-1, find all the duplicates.
class Solution(object):
def findDuplicates(self, nums):
for i in range(0, len(nums)):
tmp = nums[i] % len(nums)
nums[tmp] = nums[tmp] + len(nums)
res = []
for i in range(0, len(nums)):
if nums[i] >= (2 * len(nums)):
res.append(i)
return res
@siddarthsreeni
siddarthsreeni / repeatedSum.py
Created August 4, 2021 18:08
Given a number like 159, add the digits repeatedly until you get a single number.
def addDigits(n):
if n > 10:
return addDigits(addDigits(n//10) + n%10)
else:
return n
print(addDigits(159))
# 1 + 5 + 9 = 15
# 1 + 5 = 6
# 6
@siddarthsreeni
siddarthsreeni / perfectNumber.py
Created August 3, 2021 16:37
A Perfect Number is a positive integer that is equal to the sum of all its positive divisors except itself.
class Solution:
def checkPerfectNumber(self, num: int) -> bool:
import math
sum = 1
if num == 1:
return False
for i in range(2, int(math.sqrt(num)) + 1 ):
if num % i == 0:
sum = sum + i + num // i
return sum == num