Skip to content

Commit 757b0d6

Browse files
authored
Merge pull request #2402 from mrlee7/main
[Jeff] Week 01 Solutions
2 parents 7591ffd + 14a2041 commit 757b0d6

6 files changed

Lines changed: 126 additions & 0 deletions

File tree

โ€Ž3sum/mrlee7.pyโ€Ž

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def threeSum(self, nums: List[int]) -> List[List[int]]:
6+
result: List[List[int]] = []
7+
nums.sort()
8+
9+
for i in range(len(nums) - 2):
10+
if i > 0 and nums[i] == nums[i - 1]:
11+
continue
12+
13+
left = i + 1
14+
right = len(nums) - 1
15+
16+
while left < right:
17+
total = nums[i] + nums[left] + nums[right]
18+
19+
if total == 0:
20+
result.append([nums[i], nums[left], nums[right]])
21+
left += 1
22+
right -= 1
23+
24+
while left < right and nums[left] == nums[left - 1]:
25+
left += 1
26+
while left < right and nums[right] == nums[right + 1]:
27+
right -= 1
28+
29+
elif total < 0:
30+
left += 1
31+
else:
32+
right -= 1
33+
34+
return result

โ€Žclimbing-stairs/mrlee7.pyโ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution:
2+
def climbStairs(self, n: int) -> int:
3+
stairs = {1: 1, 2: 2}
4+
5+
for i in range(3, n + 1):
6+
stairs[i] = stairs[i - 1] + stairs[i - 2]
7+
8+
return stairs[n]
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
from typing import List
2+
3+
"""
4+
Ideation:
5+
๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ ๋’ค, ์ธ์ ‘ํ•œ ์ˆซ์ž๋“ค์„ ๋น„๊ตํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๊ธด ์—ฐ์† ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค.
6+
7+
- ๊ฐ™์€ ์ˆซ์ž๋Š” ์ค‘๋ณต์ด๋ฏ€๋กœ ๊ฑด๋„ˆ๋›ด๋‹ค.
8+
- ํ˜„์žฌ ์ˆซ์ž + 1 ์ด ๋‹ค์Œ ์ˆซ์ž์™€ ๊ฐ™์œผ๋ฉด ์—ฐ์†๋œ ์ˆ˜์ด๋ฏ€๋กœ ๊ธธ์ด๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
9+
- ์—ฐ์†์ด ๋Š๊ธฐ๋ฉด ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ๊ฐฑ์‹ ํ•˜๊ณ  ๊ธธ์ด๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
10+
11+
Time Complexity: O(n log n)
12+
Space Complexity: O(1)
13+
"""
14+
15+
16+
class Solution:
17+
18+
def longestConsecutive(self, nums: List[int]) -> int:
19+
if len(nums) == 0:
20+
return 0
21+
22+
longest = 0
23+
length = 1
24+
25+
nums.sort()
26+
27+
for idx in range(len(nums) - 1):
28+
if nums[idx] == nums[idx + 1]:
29+
continue
30+
if nums[idx] + 1 == nums[idx + 1]:
31+
length += 1
32+
else:
33+
longest = max(longest, length)
34+
length = 1
35+
longest = max(longest, length)
36+
return longest
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def productExceptSelf(self, nums: List[int]) -> List[int]:
6+
result = [0] * len(nums)
7+
8+
prefix_product = 1
9+
for index in range(len(nums)):
10+
result[index] = prefix_product
11+
prefix_product *= nums[index]
12+
13+
suffix_product = 1
14+
for index in range(len(nums) - 1, -1, -1):
15+
result[index] *= suffix_product
16+
suffix_product *= nums[index]
17+
18+
return result
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from typing import List
2+
3+
"""
4+
Ideation
5+
ํ•ด์‹œ๋งต์— ๊ฐ ์›์†Œ๋ณ„ ๋นˆ๋„์ˆ˜๋ฅผ ์ €์žฅํ•œ ๋’ค, ๋นˆ๋„์ˆ˜ ๋†’์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋‹ค์Œ ์•ž์—์„œ k๊ฐœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
6+
Time Complexity: O(n)
7+
Space Complexity: O(n + m log m)
8+
"""
9+
10+
class Solution:
11+
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
12+
frequency = {}
13+
for num in nums:
14+
frequency[num] = frequency.get(num, 0) + 1
15+
sorted_nums = sorted(frequency, key=lambda num: frequency[num], reverse=True)
16+
17+
return sorted_nums[:k]
18+
19+

โ€Žvalid-anagram/mrlee7.pyโ€Ž

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution:
2+
"""
3+
Ideation:
4+
์• ๋„ˆ๊ทธ๋žจ์€ ๋ฌธ์ž์—ด ๋‚ด ๋ฐฐ์น˜๋งŒ ๋‹ค๋ฅผ ๋ฟ, ๋™์ผํ•œ ๋ฌธ์ž๋“ค์ด ๋™์ผํ•œ ์นด์šดํŠธ๋กœ ๋ณด์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค.
5+
์ด๋ฅผ ์œ„ํ•ด ๋ฌธ์ž ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ๊ฐ™์€์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
6+
Time Complexity: O(n log n)
7+
Space Complexity: O(1)
8+
"""
9+
10+
def isAnagram(self, s: str, t: str) -> bool:
11+
return sorted(s) == sorted(t)

0 commit comments

Comments
ย (0)