diff --git a/contains-duplicate/o-ddong.py b/contains-duplicate/o-ddong.py new file mode 100644 index 000000000..0648d87c5 --- /dev/null +++ b/contains-duplicate/o-ddong.py @@ -0,0 +1,3 @@ +class Solution: + def containsDuplicate(self, nums: List[int]) -> bool: + return len(nums) != len(set(nums)) diff --git a/house-robber/o-ddong.py b/house-robber/o-ddong.py new file mode 100644 index 000000000..bda3c8b68 --- /dev/null +++ b/house-robber/o-ddong.py @@ -0,0 +1,15 @@ +class Solution: + def rob(self, nums: List[int]) -> int: + if not nums: + return 0 + elif len(nums) == 1: + return nums[0] + + dp = [0] * len(nums) + dp[0] = nums[0] + dp[1] = max(nums[0], nums[1]) + + for idx in range(2, len(nums)): + dp[idx] = max(nums[idx-1], nums[idx] + nums[idx-2]) + + return dp[-1] diff --git a/longest-consecutive-sequence/o-ddong.py b/longest-consecutive-sequence/o-ddong.py new file mode 100644 index 000000000..dfafc50d1 --- /dev/null +++ b/longest-consecutive-sequence/o-ddong.py @@ -0,0 +1,17 @@ +class Solution: + def longestConsecutive(self, nums: List[int]) -> int: + if not nums: + return 0 + + nums = sorted(set(nums)) + longest_streak = 1 + current_streak = 1 + + for i in range(1, len(nums)): + if nums[i] == nums[i - 1] + 1: + current_streak += 1 + else: + longest_streak = max(longest_streak, current_streak) + current_streak = 1 + + return max(longest_streak, current_streak) diff --git a/top-k-frequent-elements/o-ddong.py b/top-k-frequent-elements/o-ddong.py new file mode 100644 index 000000000..27a4d252e --- /dev/null +++ b/top-k-frequent-elements/o-ddong.py @@ -0,0 +1,5 @@ +import collections + +class Solution: + def topKFrequent(self, nums: List[int], k: int) -> List[int]: + return [num for num, cnt in collections.Counter(nums).most_common(k)] diff --git a/valid-palindrome/o-ddong.py b/valid-palindrome/o-ddong.py new file mode 100644 index 000000000..0c27faa7b --- /dev/null +++ b/valid-palindrome/o-ddong.py @@ -0,0 +1,10 @@ +import re + +class Solution: + def isPalindrome(self, s: str) -> bool: + filtered_phrase = re.sub("[^a-zA-Z0-9]", "", s).lower() + + if filtered_phrase == filtered_phrase[::-1]: + return True + else: + return False