diff --git a/contains-duplicate/devyejin.py b/contains-duplicate/devyejin.py new file mode 100644 index 000000000..32b66eabb --- /dev/null +++ b/contains-duplicate/devyejin.py @@ -0,0 +1,4 @@ +class Solution(object): + def containsDuplicate(self, nums): + return len(nums) != len(set(nums)) + diff --git a/house-robber/devyejin.py b/house-robber/devyejin.py new file mode 100644 index 000000000..ddbfe97a1 --- /dev/null +++ b/house-robber/devyejin.py @@ -0,0 +1,17 @@ +class Solution(object): + def rob(self, nums): + length = len(nums) + + if length <= 2: + return max(nums) + + dp = [0] * length + dp[0] = nums[0] + dp[1] = max(nums[0], nums[1]) + + for i in range(2, length): + dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]) + + return dp[-1] + + diff --git a/longest-consecutive-sequence/devyejin.py b/longest-consecutive-sequence/devyejin.py new file mode 100644 index 000000000..c56d95035 --- /dev/null +++ b/longest-consecutive-sequence/devyejin.py @@ -0,0 +1,19 @@ +class Solution(object): + def longestConsecutive(self, nums): + + if not nums: + return 0 + + num_set = set(nums) + max_length = 0 + + for num in num_set: + if num - 1 not in num_set: + length = 1 + while num + length in num_set: + length += 1 + max_length = max(max_length, length) + + return max_length + + diff --git a/top-k-frequent-elements/devyejin.py b/top-k-frequent-elements/devyejin.py new file mode 100644 index 000000000..8a082da5b --- /dev/null +++ b/top-k-frequent-elements/devyejin.py @@ -0,0 +1,9 @@ +from collections import Counter +import heapq + + +class Solution(object): + def topKFrequent(self, nums, k): + counter = sorted(Counter(nums).items(), key=lambda item: -item[1]) + return list(num for num, count in counter[:k]) + diff --git a/two-sum/devyejin.py b/two-sum/devyejin.py new file mode 100644 index 000000000..be0dc862d --- /dev/null +++ b/two-sum/devyejin.py @@ -0,0 +1,15 @@ +class Solution(object): + def twoSum(self, nums, target): + + nums_tuple = sorted(list(enumerate(nums)), key=lambda x: x[1]) + left, right = 0, len(nums) - 1 + + while left < right: + temp_sum = nums_tuple[left][1] + nums_tuple[right][1] + if temp_sum == target: + return [nums_tuple[left][0], nums_tuple[right][0]] + elif temp_sum < target: + left += 1 + else: + right -= 1 +