Skip to content

Commit 7d75381

Browse files
committed
Week 1 solutions
1 parent 41dce17 commit 7d75381

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

house-robber/i-mprovising.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
"""
2+
Time complexity O(n)
3+
"""
4+
5+
class Solution:
6+
def rob(self, nums: List[int]) -> int:
7+
n = len(nums)
8+
if n == 1:
9+
return nums[0]
10+
dp = [nums[0], max([nums[0], nums[1]])]
11+
if n == 2:
12+
return dp[1]
13+
14+
for i in range(2, n):
15+
num = nums[i]
16+
tmp = [
17+
dp[i-2] + num,
18+
dp[i-1]
19+
]
20+
dp.append(max(tmp))
21+
return dp[-1]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"""
2+
Time complexity O(n)
3+
"""
4+
5+
class Solution:
6+
def longestConsecutive(self, nums: List[int]) -> int:
7+
num_set = set(nums) # hash table
8+
longest = 0
9+
10+
for n in num_set:
11+
if n-1 in num_set:
12+
continue
13+
cur_len = 1
14+
while n + cur_len in num_set:
15+
cur_len += 1
16+
17+
longest = max(longest, cur_len)
18+
19+
return longest
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution:
2+
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
3+
"""O(nlogn) complexity"""
4+
frequency = defaultdict(int)
5+
for n in nums:
6+
frequency[n] += 1
7+
sorted_frequency = sorted(frequency.items(), key=lambda x:x[1], reverse=True)
8+
answer = []
9+
for i in range(k):
10+
answer.append(sorted_frequency[i][0])
11+
return answer

0 commit comments

Comments
 (0)