Skip to content

Commit 18b06fe

Browse files
committed
upload on 3/25
1 parent e4f17f4 commit 18b06fe

11 files changed

+184
-0
lines changed

201. Bitwise AND of Numbers Range.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
3+
def rangeBitwiseAnd(self, m: int, n: int) -> int:
4+
step = 0
5+
while m != n:
6+
m >>= 1
7+
n >>= 1
8+
step += 1
9+
return m << step

202. Happy Number.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
3+
def isHappy(self, n: int) -> bool:
4+
if n == 1:
5+
return True
6+
mem = set()
7+
while n != 1:
8+
n = sum(int(i)**2 for i in str(n))
9+
if n in mem:
10+
return False
11+
mem.add(n)
12+
return True

203. Remove Linked List Elements.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Definition for singly-linked list.
2+
# class ListNode:
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.next = None
6+
7+
8+
class Solution:
9+
10+
def removeElements(self, head: ListNode, val: int) -> ListNode:
11+
if not head:
12+
return None
13+
dummy = prev = ListNode(0)
14+
dummy.next = head
15+
cur = head
16+
while cur:
17+
if cur.val == val:
18+
cur = cur.next
19+
prev.next = cur
20+
else:
21+
cur = cur.next
22+
prev = prev.next
23+
return dummy.next

204. Count Primes.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
3+
def countPrimes(self, n: int) -> int:
4+
notPrime = [False] * n
5+
cnt = 0
6+
for i in range(2, n):
7+
if not notPrime[i]:
8+
cnt += 1
9+
j = 2
10+
while j * i < n:
11+
notPrime[i * j] = True
12+
j += 1
13+
return cnt

205. Isomorphic Strings.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution:
2+
3+
def isIsomorphic(self, s: str, t: str) -> bool:
4+
m = len(s)
5+
n = len(t)
6+
if m != n:
7+
return False
8+
dic1 = {}
9+
dic2 = {}
10+
for i in range(m):
11+
if s[i] in dic1:
12+
dic1[s[i]].append(i)
13+
else:
14+
dic1[s[i]] = [i]
15+
for i in range(m):
16+
if t[i] in dic2:
17+
dic2[t[i]].append(i)
18+
else:
19+
dic2[t[i]] = [i]
20+
for i in range(m):
21+
if dic1[s[i]] != dic2[t[i]]:
22+
return False
23+
return True

206. Reverse Linked List.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Definition for singly-linked list.
2+
# class ListNode:
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.next = None
6+
7+
8+
class Solution:
9+
10+
def reverseList(self, head: ListNode) -> ListNode:
11+
cur = head
12+
prev = None
13+
while cur:
14+
cur.next, cur, prev = prev, cur.next, cur
15+
return prev

76. Minimum Window Substring.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution:
2+
3+
def minWindow(self, s: str, t: str) -> str:
4+
dic = {}
5+
for c in t:
6+
dic[c] = dic.get(c, 0) + 1
7+
start, end, head = 0, 0, 0
8+
min_len = len(s) + 1
9+
cnt = len(t)
10+
while end < len(s):
11+
if s[end] in dic:
12+
if dic[s[end]] > 0:
13+
cnt -= 1
14+
dic[s[end]] -= 1
15+
end += 1
16+
17+
while cnt == 0:
18+
if end - start < min_len:
19+
head = start
20+
min_len = end - start
21+
if s[start] in dic:
22+
dic[s[start]] += 1
23+
if dic[s[start]] > 0:
24+
cnt += 1
25+
start += 1
26+
return s[head: head + min_len] if min_len < len(s) + 1 else ""

77. Combinations.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
3+
def combine(self, n: int, k: int) -> List[List[int]]:
4+
res = []
5+
lst = [i for i in range(1, n + 1)]
6+
self.helper(lst, k, [], res)
7+
return res
8+
9+
def helper(self, lst, k, path, res):
10+
if k == 0:
11+
res.append(path)
12+
if lst:
13+
for i in range(len(lst)):
14+
self.helper(lst[i + 1:], k - 1, path + [lst[i]], res)

78. Subsets.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
3+
def subsets(self, nums: List[int]) -> List[List[int]]:
4+
res = []
5+
nums.sort()
6+
self.helper(nums, 0, [], res)
7+
return res
8+
9+
def helper(self, nums, index, path, res):
10+
res.append(path)
11+
for i in range(index, len(nums)):
12+
self.helper(nums, i + 1, path + [nums[i]], res)

79. Word Search.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution:
2+
3+
def exist(self, board: List[List[str]], word: str) -> bool:
4+
m = len(board)
5+
n = len(board[0])
6+
for i in range(m):
7+
for j in range(n):
8+
if self.helper(board, i, j, word):
9+
return True
10+
return False
11+
12+
def helper(self, board, i, j, word):
13+
if not word:
14+
return True
15+
16+
if i < 0 or j < 0 or i >= len(board) or j >= len(board[0]) or board[i][j] != word[0]:
17+
return False
18+
temp = board[i][j]
19+
board[i][j] = "#"
20+
flag = self.helper(board, i + 1, j, word[1:]) or self.helper(board, i - 1, j, word[1:]
21+
) or self.helper(board, i, j + 1, word[1:]) or self.helper(board, i, j - 1, word[1:])
22+
23+
board[i][j] = temp
24+
return flag
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
3+
def removeDuplicates(self, nums):
4+
"""
5+
:type nums: List[int]
6+
:rtype: int
7+
"""
8+
i = 0
9+
for n in nums:
10+
if i < 2 or n > nums[i - 2]:
11+
nums[i] = n
12+
i += 1
13+
return i

0 commit comments

Comments
 (0)