File tree Expand file tree Collapse file tree 4 files changed +93
-0
lines changed
product-of-array-except-self Expand file tree Collapse file tree 4 files changed +93
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution :
2+ def threeSum (self , nums : List [int ]) -> List [List [int ]]:
3+ # ans = set()
4+ # for i in range(len(n)):
5+ # seen = {}
6+ # for j in range(i+1, len(n)):
7+ # complement = -(nums[i] + nums[j])
8+ # if complement in seen:
9+ # ans.add(tuple(sorted([nums[i], nums[j], complement])))
10+ # seen[nums[j]] = j
11+ # return [list(triplet) for triplet in ans]
12+ # hash + 이중 loop -> O(n^2)
13+
14+
15+ ## 투포인터 활용
16+ # sort + loop -> O(nlogn)
17+ ans_set = set ()
18+ nums .sort ()
19+ for i in range (len (nums )):
20+ l = i + 1
21+ r = len (nums ) - 1
22+ while l < r :
23+ total = nums [i ] + nums [l ] + nums [r ]
24+ if total < 0 :
25+ l += 1
26+ elif total > 0 :
27+ r -= 1
28+ else :
29+ # 중복제거
30+ ans_set .add ((nums [i ], nums [l ], nums [r ]))
31+ l += 1
32+ r -= 1
33+ return list (ans_set )
Original file line number Diff line number Diff line change 1+ class Solution :
2+ def climbStairs (self , n : int ) -> int :
3+ if n <= 1 :
4+ return 1
5+ dp = [0 ] * n
6+ print (dp )
7+ dp [0 ] = 1
8+ dp [1 ] = 2
9+
10+ for i in range (2 , n ):
11+ dp [i ] = dp [i - 2 ] + dp [i - 1 ]
12+ return dp [- 1 ]
Original file line number Diff line number Diff line change 1+ class Solution :
2+ def productExceptSelf (self , nums : List [int ]) -> List [int ]:
3+ # ans = [1] * len(nums)
4+ # for i in range(len(nums)):
5+ # for j in range(len(nums)):
6+ # if i != j:
7+ # ans[i] = ans[i] * nums[j]
8+ # return ans
9+ # 시간복잡도를 줄이기 위해서 이중루프를 안쓰는 방법으로
10+ left = [1 ] * len (nums )
11+ right = [1 ] * len (nums )
12+ for i in range (len (nums ) - 1 ):
13+ left [i + 1 ] = left [i ] * nums [i ]
14+ print (left )
15+ for j in range (len (nums ) - 1 , 0 , - 1 ):
16+ right [j - 1 ] = right [j ] * nums [j ]
17+ print (right )
18+
19+ answer = []
20+ for k in range (len (left )):
21+ answer .append (left [k ]* right [k ])
22+ return answer
Original file line number Diff line number Diff line change 1+ class Solution :
2+ def isAnagram (self , s : str , t : str ) -> bool :
3+ if len (s ) != len (t ):
4+ return False
5+ # sorted_s = sorted(s)
6+ # sorted_t = sorted(t)
7+ # for i in range(len(s)):
8+ # if sorted_s[i] != sorted_t[i]:
9+ # return False
10+ # return True
11+ # 시간복잡도가 O(nlog(n))
12+
13+ # Hashmap 사용하는 방법으로 변경
14+ counter = {}
15+ for char in s :
16+ counter [char ] = counter .get (char , 0 ) + 1
17+ for char in t :
18+ if char in counter and counter [char ] != 0 :
19+ counter [char ] -= 1
20+ elif char in counter and counter [char ] == 0 :
21+ return False
22+ else :
23+ return False
24+ # 시간복잡도 O(n)
25+ # 공간복잡도 O(n)
26+ return True
You can’t perform that action at this time.
0 commit comments