From 849cf91fbc213a2a3f33f1a6951f00d72b06a0ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=EC=98=81=5Bchris=5D=5BTech=5D?= Date: Wed, 23 Jul 2025 23:05:07 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=201=EC=A3=BC=EC=B0=A8=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contains-duplicate/chrisjune.py | 9 +++++++++ house-robber/chrisjune.py | 12 ++++++++++++ longest-consecutive-sequence/chrisjune.py | 18 ++++++++++++++++++ top-k-frequent-elements/chrisjune.py | 12 ++++++++++++ two-sum/chrisjune.py | 11 +++++++++++ 5 files changed, 62 insertions(+) create mode 100644 contains-duplicate/chrisjune.py create mode 100644 house-robber/chrisjune.py create mode 100644 longest-consecutive-sequence/chrisjune.py create mode 100644 top-k-frequent-elements/chrisjune.py create mode 100644 two-sum/chrisjune.py diff --git a/contains-duplicate/chrisjune.py b/contains-duplicate/chrisjune.py new file mode 100644 index 000000000..bfb904413 --- /dev/null +++ b/contains-duplicate/chrisjune.py @@ -0,0 +1,9 @@ +class Solution: + def containsDuplicate(self, nums) -> bool: + dic = {} + for num in nums: + dic[num] = dic.get(num, 0) + 1 + for v in dic.values(): + if v > 1: + return True + return False diff --git a/house-robber/chrisjune.py b/house-robber/chrisjune.py new file mode 100644 index 000000000..4a479422f --- /dev/null +++ b/house-robber/chrisjune.py @@ -0,0 +1,12 @@ +from typing import List + + +class Solution: + def rob(self, nums: List[int]) -> int: + if len(nums) <= 1: + return nums[0] + dp = [0] * len(nums) + dp[0], dp[1] = nums[0], max(nums[0], nums[1]) + for i in range(2, len(nums)): + dp[i] = max(dp[i - 1], nums[i] + dp[i - 2]) + return dp[-1] diff --git a/longest-consecutive-sequence/chrisjune.py b/longest-consecutive-sequence/chrisjune.py new file mode 100644 index 000000000..62db0e648 --- /dev/null +++ b/longest-consecutive-sequence/chrisjune.py @@ -0,0 +1,18 @@ +from typing import List + + +class Solution: + def longestConsecutive(self, nums: List[int]) -> int: + if len(nums) < 1: + return 0 + nums = list(set(nums)) + nums.sort() + dp = [0] * len(nums) + dp[0] = 1 + for i in range(1, len(nums)): + if nums[i - 1] + 1 == nums[i]: + dp[i] = dp[i - 1] + 1 + else: + dp[i] = 1 + print(dp) + return max(dp) diff --git a/top-k-frequent-elements/chrisjune.py b/top-k-frequent-elements/chrisjune.py new file mode 100644 index 000000000..9d076db31 --- /dev/null +++ b/top-k-frequent-elements/chrisjune.py @@ -0,0 +1,12 @@ +from typing import List + + +class Solution: + def topKFrequent(self, nums: List[int], k: int) -> List[int]: + dic = {} + for num in nums: + dic[num] = dic.get(num, 0) + 1 + l = [(k, v) for k, v in dic.items()] + l.sort(reverse=True, key=lambda x: x[1]) + l = [i for i, _ in l] + return l[:k] diff --git a/two-sum/chrisjune.py b/two-sum/chrisjune.py new file mode 100644 index 000000000..e6dc4d7ef --- /dev/null +++ b/two-sum/chrisjune.py @@ -0,0 +1,11 @@ +from typing import List + + +class Solution: + def twoSum(self, nums: List[int], target: int) -> List[int]: + for i in range(len(nums)): + for j in range(len(nums)): + if i == j: + continue + if nums[i] + nums[j] == target: + return [i, j] From 7720eff76612fe42016758dc373212e435cb2d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=EC=98=81=5Bchris=5D=5BTech=5D?= Date: Thu, 24 Jul 2025 10:29:39 +0900 Subject: [PATCH 2/4] two sum refactoring --- two-sum/chrisjune.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/two-sum/chrisjune.py b/two-sum/chrisjune.py index e6dc4d7ef..8a285d870 100644 --- a/two-sum/chrisjune.py +++ b/two-sum/chrisjune.py @@ -3,9 +3,9 @@ class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: + nums_dic = {num: idx for idx, num in enumerate(nums)} for i in range(len(nums)): - for j in range(len(nums)): - if i == j: - continue - if nums[i] + nums[j] == target: - return [i, j] + remain = target - nums[i] + exists_idx = nums_dic.get(remain) + if exists_idx and exists_idx != i: + return i, exists_idx From 625d027c316769a568db52178e4df13f61482c1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=EC=98=81=5Bchris=5D=5BTech=5D?= Date: Sat, 2 Aug 2025 00:49:13 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat:=202=EC=A3=BC=EC=B0=A8=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3sum/chrisjune.py | 17 +++++++++++++++++ climbing-stairs/chrisjune.py | 10 ++++++++++ product-of-array-except-self/chrisjune.py | 19 +++++++++++++++++++ valid-anagram/chrisjune.py | 3 +++ 4 files changed, 49 insertions(+) create mode 100644 3sum/chrisjune.py create mode 100644 climbing-stairs/chrisjune.py create mode 100644 product-of-array-except-self/chrisjune.py create mode 100644 valid-anagram/chrisjune.py diff --git a/3sum/chrisjune.py b/3sum/chrisjune.py new file mode 100644 index 000000000..06c062631 --- /dev/null +++ b/3sum/chrisjune.py @@ -0,0 +1,17 @@ +from typing import List + + +class Solution: + def threeSum(self, nums: List[int]) -> List[List[int]]: + if len(nums) >= 3 and set(nums) == set([0]): + return [[0, 0, 0]] + triplets = set() + for i in range(len(nums) - 2): + seen = set() + for j in range(i + 1, len(nums)): + f = -(nums[i] + nums[j]) + if f in seen: + triplet = [nums[i], nums[j], f] + triplets.add(tuple(sorted(triplet))) + seen.add(nums[j]) + return list(triplets) diff --git a/climbing-stairs/chrisjune.py b/climbing-stairs/chrisjune.py new file mode 100644 index 000000000..099996f0e --- /dev/null +++ b/climbing-stairs/chrisjune.py @@ -0,0 +1,10 @@ +class Solution: + def climbStairs(self, n: int) -> int: + if n <= 1: + return 1 + dp = [0] * n + dp[0] = 1 + dp[1] = 2 + for i in range(3,n+1): + dp[i-1] = dp[i-2] + dp[i-3] + return dp[n-1] \ No newline at end of file diff --git a/product-of-array-except-self/chrisjune.py b/product-of-array-except-self/chrisjune.py new file mode 100644 index 000000000..224b0126c --- /dev/null +++ b/product-of-array-except-self/chrisjune.py @@ -0,0 +1,19 @@ +from typing import List + + +class Solution: + def productExceptSelf(self, nums: List[int]) -> List[int]: + len_n = len(nums) + front_cum = [1] * len_n + back_cum = [1] * len_n + + for i in range(1, len_n): + front_cum[i] = front_cum[i - 1] * nums[i - 1] + + for j in range(1, len_n): + idx = len_n - j - 1 + back_cum[idx] = back_cum[idx + 1] * nums[idx + 1] + + final = [front_cum[i] * back_cum[i] for i in range(len_n)] + + return final diff --git a/valid-anagram/chrisjune.py b/valid-anagram/chrisjune.py new file mode 100644 index 000000000..0411cf292 --- /dev/null +++ b/valid-anagram/chrisjune.py @@ -0,0 +1,3 @@ +class Solution: + def isAnagram(self, s: str, t: str) -> bool: + return sorted(s) == sorted(t) From 6d87b2228cea1034a405acb3c5598ee209d562ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=EC=98=81=5Bchris=5D=5BTech=5D?= Date: Sat, 2 Aug 2025 20:46:50 +0900 Subject: [PATCH 4/4] line break add --- climbing-stairs/chrisjune.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/climbing-stairs/chrisjune.py b/climbing-stairs/chrisjune.py index 099996f0e..107e3b35e 100644 --- a/climbing-stairs/chrisjune.py +++ b/climbing-stairs/chrisjune.py @@ -5,6 +5,6 @@ def climbStairs(self, n: int) -> int: dp = [0] * n dp[0] = 1 dp[1] = 2 - for i in range(3,n+1): - dp[i-1] = dp[i-2] + dp[i-3] - return dp[n-1] \ No newline at end of file + for i in range(3, n + 1): + dp[i - 1] = dp[i - 2] + dp[i - 3] + return dp[n - 1]