Skip to content

Commit efa218f

Browse files
authored
Merge pull request #2096 from doh6077/main
[doh6077] WEEK 03 solutions
2 parents 531a2c3 + f189d0a commit efa218f

File tree

5 files changed

+76
-0
lines changed

5 files changed

+76
-0
lines changed

combination-sum/doh6077.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution:
2+
3+
def solve(self, candidates, remsum, cur, res, idx) :
4+
if remsum == 0 :
5+
res.append(list(cur))
6+
return
7+
8+
if remsum < 0 or idx >= len(candidates) :
9+
return
10+
cur.append(candidates[idx])
11+
self.solve(candidates, remsum-candidates[idx],cur,res,idx)
12+
cur.pop()
13+
self.solve(candidates,remsum,cur,res,idx+1)
14+
15+
16+
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
17+
cur = []
18+
res = []
19+
self.solve(candidates,target,cur,res,0)
20+
return res

decode-ways/doh6077.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution:
2+
def numDecodings(self, s: str) -> int:
3+
if s[0] == '0':
4+
return 0
5+
n = len(s)
6+
cur = 1
7+
pre1 = pre2 = 1
8+
for i in range(2, n+1):
9+
one = int(s[i-1])
10+
two = int(s[i-2:i])
11+
cur = 0
12+
if 1 <= one <= 9:
13+
cur += pre1
14+
if 10 <= two <= 26:
15+
cur += pre2
16+
17+
pre2 = pre1
18+
pre1 = cur
19+
20+
return cur

maximum-subarray/doh6077.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def maxSubArray(self, nums: List[int]) -> int:
3+
res = nums[0]
4+
total = 0
5+
6+
for n in nums:
7+
if total < 0:
8+
total = 0
9+
10+
total += n
11+
res = max(res, total)
12+
13+
return res

number-of-1-bits/doh6077.py

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

valid-palindrome/doh6077.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import re
2+
# two pointers
3+
class Solution:
4+
def isPalindrome(self, s: str) -> bool:
5+
# remove all alphanumeric characters and convert all uppercase letters into lowercase letters
6+
cleaned_s = re.sub(r'[^a-zA-Z0-9]', '', s).lower()
7+
n = len(cleaned_s)
8+
left, right = 0, n -1
9+
while left < right:
10+
if cleaned_s[left] == cleaned_s[right]:
11+
left += 1
12+
right -= 1
13+
else:
14+
return False
15+
16+
return True

0 commit comments

Comments
 (0)