Skip to content

Commit 26c76f3

Browse files
committed
Leetcode submissions
1 parent 7cc5b37 commit 26c76f3

File tree

200 files changed

+3208
-73
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

200 files changed

+3208
-73
lines changed

add-binary.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution:
2+
def addBinary(self, a: str, b: str) -> str:
3+
m = len(a)
4+
n = len(b)
5+
if m > n:
6+
b = "0" * (m - n) + b
7+
else:
8+
a = "0" * (n - m) + a
9+
op = []
10+
k = max(m, n)
11+
i = k - 1
12+
carry = 0
13+
while i >= 0:
14+
currval = int(a[i]) + int(b[i]) + carry
15+
op.insert(0, str(currval % 2))
16+
carry = currval // 2
17+
i -= 1
18+
if carry > 0:
19+
op.insert(0, "1")
20+
return "".join(op)

add-digits.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def addDigits(self, num: int) -> int:
3+
k = num % 9
4+
if k == 0:
5+
if num == 0:
6+
return 0
7+
return 9
8+
else:
9+
return k

add-two-numbers.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode], carry=0)
99
l1val = l1.val if l1 else 0
1010
l2val = l2.val if l2 else 0
1111
currval = l1val + l2val + carry
12-
curr = ListNode(val = currval % 10)
13-
curr.next = self.addTwoNumbers(l1.next if l1 else None, l2.next if l2 else None, carry = currval // 10)
12+
curr = ListNode()
13+
curr.val = currval % 10
14+
curr.next = self.addTwoNumbers(l1.next if l1 else None, l2.next if l2 else None, carry=currval // 10)
1415
return curr
1516
else:
1617
if carry > 0:
17-
return ListNode(val = carry)
18+
return ListNode(val=carry)
1819
return None

all-paths-from-source-to-target.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:
33
n = len(graph)
44
op = []
55
paths = [([0], {0})]
6-
while len(paths) > 0:
7-
curr, visited = paths.pop()
6+
i = 0
7+
while i < len(paths):
8+
curr, visited = paths[i]
89
if curr[-1] == n - 1:
910
op.append(curr)
1011
for newcurr in graph[curr[-1]]:
1112
if newcurr not in visited:
1213
paths.append((curr + [newcurr], visited.union({newcurr})))
14+
i += 1
1315
return op

arithmetic-slices.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
11
class Solution:
22
def numSlicesEndingHere(self, nums, i, n):
3-
if i in self.cache:
4-
return self.cache[i]
53
if i < 2:
64
return 0
75
if i == 2:
86
if nums[2] - nums[1] == nums[1] - nums[0]:
9-
self.cache[i] = 1
107
return 1
11-
self.cache[i] = 0
128
return 0
139
if nums[i] - nums[i - 1] == nums[i - 1] - nums[i - 2]:
14-
val = 1 + self.numSlicesEndingHere(nums, i - 1, n)
15-
self.cache[i] = val
16-
return val
17-
self.cache[i] = 0
10+
return 1 + self.numSlicesEndingHere(nums, i - 1, n)
1811
return 0
1912

2013
def numberOfArithmeticSlices(self, nums: List[int]) -> int:
2114
n = len(nums)
22-
self.cache = {}
2315
ctr = 0
2416
for i in range(n):
2517
ctr += self.numSlicesEndingHere(nums, i, n)

arithmetic-subarrays.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def isAP(self, arr):
3+
arr.sort()
4+
n = len(arr)
5+
d = arr[1] - arr[0]
6+
for i in range(1, n - 1):
7+
if arr[i + 1] - arr[i] != d:
8+
return False
9+
return True
10+
11+
12+
def checkArithmeticSubarrays(self, nums: List[int], l: List[int], r: List[int]) -> List[bool]:
13+
n = len(l)
14+
return [self.isAP(nums[l[i]:r[i]+1]) for i in range(n)]
15+

array-nesting.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution:
2+
def DFS(self, nums, i, visited):
3+
visited.add(i)
4+
if nums[i] not in visited:
5+
return self.DFS(nums, nums[i], visited)
6+
else:
7+
return (i, visited)
8+
9+
def arrayNesting(self, nums: List[int]) -> int:
10+
n = len(nums)
11+
mlen = 0
12+
visited = set()
13+
for i in range(n):
14+
if i not in visited:
15+
start, l = self.DFS(nums, i, set())
16+
end, l = self.DFS(nums, start, set())
17+
visited.update(l)
18+
mlen = max(mlen, len(l))
19+
return mlen

assign-cookies.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def findContentChildren(self, g: List[int], s: List[int]) -> int:
3+
g.sort()
4+
s.sort()
5+
n = len(s)
6+
ctr = 0
7+
for greed in g:
8+
for i in range(n):
9+
if s[i] != None:
10+
if s[i] >= greed:
11+
s[i] = None
12+
ctr += 1
13+
break
14+
return ctr

average-of-levels-in-binary-tree.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution:
8+
def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]:
9+
if not root:
10+
return []
11+
queue = [(root, 0)]
12+
levels = {}
13+
level = 0
14+
while len(queue) > 0:
15+
curr, level = queue.pop(0)
16+
levels[level] = levels.get(level, []) + [curr.val]
17+
if curr.left:
18+
queue.append((curr.left, level + 1))
19+
if curr.right:
20+
queue.append((curr.right, level + 1))
21+
return [sum(levels[l])/len(levels[l]) for l in range(level + 1)]
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class Solution:
2+
def average(self, salary: List[int]) -> float:
3+
n = len(salary)
4+
salary.sort()
5+
total = sum(salary[1:-1])
6+
return total / (n - 2)

0 commit comments

Comments
 (0)