From 71df1cf6af82ebdcd371bb25fa8a54b58c8ca2a1 Mon Sep 17 00:00:00 2001 From: jonghun Date: Wed, 23 Jul 2025 08:17:08 +0900 Subject: [PATCH 1/6] add rivkode 1-3 questions --- contains-duplicate/rivkode.py | 11 ++++++---- top-k-frequent-elements/rivkode.py | 35 ++++++++++++++++++++++-------- two-sum/rivkode.py | 18 +++++++++++++++ 3 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 two-sum/rivkode.py diff --git a/contains-duplicate/rivkode.py b/contains-duplicate/rivkode.py index ecd4489fc..bad1bba98 100644 --- a/contains-duplicate/rivkode.py +++ b/contains-duplicate/rivkode.py @@ -5,11 +5,14 @@ # The size of the set for storing deduplicated elements is proportional to the length of the input list. class Solution: - def containsDuplicate(self, nums: list[int]) -> bool: - list_len = len(nums) - set_len = len(set(nums)) + def containsDuplicate(self, nums): + list_num = len(nums) + set_num = len(set(nums)) - return list_len != set_len + if list_num != set_num: + return True + else: + return False if __name__ == "__main__": solution = Solution() diff --git a/top-k-frequent-elements/rivkode.py b/top-k-frequent-elements/rivkode.py index d2b585fed..bca5afb1e 100644 --- a/top-k-frequent-elements/rivkode.py +++ b/top-k-frequent-elements/rivkode.py @@ -8,18 +8,35 @@ # - and when sorting takes O(n), hash[x] occupy O(1) class Solution: - def topKFrequent(self, nums: List[int], k: int) -> List[int]: - hash = dict() + def topKFrequent(self, nums, k): + """ + :type nums: List[int] + :type k: int + :rtype: List[int] + """ - # for loop nums to set count for each element in hash(dictionary) - for num in nums: - if num in hash: - hash[num] += 1 + dic = {} + + for v in nums: + if v in dic: + cur = dic[v] + cur += 1 + dic[v] = cur else: - hash[num] = 1 + dic[v] = 1 + + reverse_desc = sorted(dic.items(), key=lambda item: item[1], reverse=True) - # sort (TimSort), using lambda function to set a sorting key which is a count - return sorted(hash, key=lambda x: hash[x], reverse=True)[:k] + n = 0 + result = [] + for v in reverse_desc: + if n == k: + break + + result.append(v[0]) + n += 1 + + return result if __name__ == "__main__": solution = Solution() diff --git a/two-sum/rivkode.py b/two-sum/rivkode.py new file mode 100644 index 000000000..e9bae5b16 --- /dev/null +++ b/two-sum/rivkode.py @@ -0,0 +1,18 @@ +class Solution(object): + def twoSum(self, nums, target): + + """ + :type nums: List[int] + :type target: int + :rtype: List[int] + """ + + dic = {} + + for i, v in enumerate(nums): + complement = target - v + + if complement in dic: + return [i, dic[complement]] + + dic[v] = i \ No newline at end of file From 8ea479876899b0b67f849a076a2e9134d867e7b6 Mon Sep 17 00:00:00 2001 From: jonghun Date: Sat, 26 Jul 2025 14:53:55 +0900 Subject: [PATCH 2/6] add 4, 5 questions --- house-robber/rivkode.py | 18 ++++++++++++++++++ longest-consecutive-sequence/rivkode.py | 19 +++++++++++++++++++ two-sum/rivkode.py | 2 +- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 house-robber/rivkode.py create mode 100644 longest-consecutive-sequence/rivkode.py diff --git a/house-robber/rivkode.py b/house-robber/rivkode.py new file mode 100644 index 000000000..98136d628 --- /dev/null +++ b/house-robber/rivkode.py @@ -0,0 +1,18 @@ +class Solution(object): + def rob(self, nums): + """ + :type nums: List[int] + :rtype: int + """ + memo = {} + + def dfs(start): + if start in memo: + return memo[start] + if not start < len(nums): + memo[start] = 0 + else: + memo[start] = max(nums[start] + dfs(start + 2), dfs(start + 1)) + return memo[start] + + return dfs(0) diff --git a/longest-consecutive-sequence/rivkode.py b/longest-consecutive-sequence/rivkode.py new file mode 100644 index 000000000..81427d1ac --- /dev/null +++ b/longest-consecutive-sequence/rivkode.py @@ -0,0 +1,19 @@ +class Solution(object): + def longestConsecutive(self, nums): + """ + :type nums: List[int] + :rtype: int + """ + num_set = set(nums) + longest = 0 + + for num in nums: + if num - 1 in num_set: + continue + + length = 1 + while num + length in num_set: + length += 1 + longest = max(length, longest) + return longest + \ No newline at end of file diff --git a/two-sum/rivkode.py b/two-sum/rivkode.py index e9bae5b16..b12ccb420 100644 --- a/two-sum/rivkode.py +++ b/two-sum/rivkode.py @@ -15,4 +15,4 @@ def twoSum(self, nums, target): if complement in dic: return [i, dic[complement]] - dic[v] = i \ No newline at end of file + dic[v] = i From 9004ccde6385cc7dd08cd35552f901c4e9cc6ca9 Mon Sep 17 00:00:00 2001 From: jonghun Date: Sat, 26 Jul 2025 15:05:26 +0900 Subject: [PATCH 3/6] fix 3 questions to use get(v,0) --- top-k-frequent-elements/rivkode.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/top-k-frequent-elements/rivkode.py b/top-k-frequent-elements/rivkode.py index bca5afb1e..a8c34aa82 100644 --- a/top-k-frequent-elements/rivkode.py +++ b/top-k-frequent-elements/rivkode.py @@ -18,12 +18,7 @@ def topKFrequent(self, nums, k): dic = {} for v in nums: - if v in dic: - cur = dic[v] - cur += 1 - dic[v] = cur - else: - dic[v] = 1 + dic[v] = dic.get(v, 0) + 1 reverse_desc = sorted(dic.items(), key=lambda item: item[1], reverse=True) From 3225a05c5f7323ca7dade086bf9858ef070b2e2c Mon Sep 17 00:00:00 2001 From: jonghun Date: Sat, 26 Jul 2025 15:22:51 +0900 Subject: [PATCH 4/6] add empty line --- two-sum/rivkode.py | 1 + 1 file changed, 1 insertion(+) diff --git a/two-sum/rivkode.py b/two-sum/rivkode.py index b12ccb420..b916e4986 100644 --- a/two-sum/rivkode.py +++ b/two-sum/rivkode.py @@ -16,3 +16,4 @@ def twoSum(self, nums, target): return [i, dic[complement]] dic[v] = i + From bba96426783cf9691940d3cf0992ed92c04dfc54 Mon Sep 17 00:00:00 2001 From: jonghun Date: Sat, 26 Jul 2025 15:23:57 +0900 Subject: [PATCH 5/6] add empty line --- contains-duplicate/rivkode.py | 3 +++ house-robber/rivkode.py | 3 +++ longest-consecutive-sequence/rivkode.py | 3 +++ top-k-frequent-elements/rivkode.py | 4 ++++ two-sum/rivkode.py | 4 ++++ 5 files changed, 17 insertions(+) diff --git a/contains-duplicate/rivkode.py b/contains-duplicate/rivkode.py index bad1bba98..ab1076354 100644 --- a/contains-duplicate/rivkode.py +++ b/contains-duplicate/rivkode.py @@ -28,3 +28,6 @@ def containsDuplicate(self, nums): print(f"start {index} test") print(f"input : {test}") print(f"Is valid palindrome ? {solution.containsDuplicate(test)}\n") + + + diff --git a/house-robber/rivkode.py b/house-robber/rivkode.py index 98136d628..66ae761d2 100644 --- a/house-robber/rivkode.py +++ b/house-robber/rivkode.py @@ -16,3 +16,6 @@ def dfs(start): return memo[start] return dfs(0) + + + diff --git a/longest-consecutive-sequence/rivkode.py b/longest-consecutive-sequence/rivkode.py index 81427d1ac..6d54ca641 100644 --- a/longest-consecutive-sequence/rivkode.py +++ b/longest-consecutive-sequence/rivkode.py @@ -16,4 +16,7 @@ def longestConsecutive(self, nums): length += 1 longest = max(length, longest) return longest + + + \ No newline at end of file diff --git a/top-k-frequent-elements/rivkode.py b/top-k-frequent-elements/rivkode.py index a8c34aa82..e1989d7d1 100644 --- a/top-k-frequent-elements/rivkode.py +++ b/top-k-frequent-elements/rivkode.py @@ -50,3 +50,7 @@ def topKFrequent(self, nums, k): print(f"start{i}") print(f"input : {nums}, {k}") print(f"result : {result}") + + + + diff --git a/two-sum/rivkode.py b/two-sum/rivkode.py index b916e4986..8e4a84b79 100644 --- a/two-sum/rivkode.py +++ b/two-sum/rivkode.py @@ -17,3 +17,7 @@ def twoSum(self, nums, target): dic[v] = i + + + + From 3c24c20fa47ba9c87df689fabc4ae38b0235f06e Mon Sep 17 00:00:00 2001 From: jonghun Date: Sat, 26 Jul 2025 15:30:06 +0900 Subject: [PATCH 6/6] add empty --- longest-consecutive-sequence/rivkode.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/longest-consecutive-sequence/rivkode.py b/longest-consecutive-sequence/rivkode.py index 6d54ca641..88cdb89fb 100644 --- a/longest-consecutive-sequence/rivkode.py +++ b/longest-consecutive-sequence/rivkode.py @@ -19,4 +19,4 @@ def longestConsecutive(self, nums): - \ No newline at end of file +