File tree Expand file tree Collapse file tree
product-of-array-except-self Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ from typing import *
2+
3+
4+ class Solution :
5+ """
6+ TC: O(n)
7+ - memo = [-1] * (n+1): O(n)
8+ - for num in range(3, n+1): O(n)
9+ ์ต์ข
: O(n)
10+
11+ SC: O(n)
12+ - memo: O(n)
13+
14+ ํ์ด:
15+ n๋ฒ์งธ ๊ณ๋จ๊น์ง ์ฌ๋ผ๊ฐ๋ ๋ฐฉ๋ฒ์ ์๋ (n-1๋ฒ์งธ ๋ฐฉ๋ฒ์ ์) + (n-2๋ฒ์งธ ๋ฐฉ๋ฒ์ ์).
16+ ํผ๋ณด๋์น์์ด๊ณผ ๋์ผํ ์ ํ์. memoization์ผ๋ก ์ค๋ณต ๊ณ์ฐ ๋ฐฉ์ง.
17+ """
18+ def climbStairs (self , n : int ) -> int :
19+ if n < 2 :
20+ return 1
21+ memo = [- 1 ] * (n + 1 )
22+ memo [1 ] = 1
23+ memo [2 ] = 2
24+
25+ for num in range (3 , n + 1 ):
26+ memo [num ] = memo [num - 1 ] + memo [num - 2 ]
27+
28+ return memo [n ]
Original file line number Diff line number Diff line change 1+ from typing import *
2+
3+
4+ class Solution :
5+ """
6+ TC: O(n)
7+ - left ๋ฐฐ์ด ์์ฑ: O(n)
8+ - right ๋ฐฐ์ด ์์ฑ: O(n)
9+ - answer ๋ฐฐ์ด ์์ฑ: O(n)
10+ ์ต์ข
: O(n)
11+
12+ SC: O(n)
13+ - left, right, answer ๋ฐฐ์ด ๊ฐ๊ฐ O(n)
14+ ์ต์ข
: O(n)
15+
16+ ํ์ด:
17+ ๋๋๊ธฐ ์์ด ํ๊ธฐ ์ํด ๊ฐ ์ธ๋ฑ์ค ๊ธฐ์ค ์ผ์ชฝ ์์๋ค์ ๊ณฑ(left), ์ค๋ฅธ์ชฝ ์์๋ค์ ๊ณฑ(right) ๋ฐฐ์ด์ ๋ณ๋๋ก ๋ง๋ค๊ณ
18+ answer[i] = left[i-1] * right[i+1] ๋ก ๊ณ์ฐ.
19+ i=0์ด๋ฉด ์ผ์ชฝ ๊ณฑ ์์ผ๋ฏ๋ก right[i+1]๋ง, i=๋ง์ง๋ง์ด๋ฉด left[i-1]๋ง ์ฌ์ฉ.
20+ """
21+ def productExceptSelf (self , nums : List [int ]) -> List [int ]:
22+ nums_len = len (nums )
23+ last_index = nums_len - 1
24+
25+ left = [0 ] * nums_len
26+ for i , num in enumerate (nums ):
27+ if i == 0 :
28+ left [i ] = num
29+ continue
30+ left [i ] = left [i - 1 ] * num
31+
32+ right = [0 ] * nums_len
33+ for i in range (last_index , - 1 , - 1 ):
34+ if i == last_index :
35+ right [i ] = nums [i ]
36+ continue
37+ right [i ] = right [i + 1 ] * nums [i ]
38+
39+ answer = [0 ] * nums_len
40+ for i in range (nums_len ):
41+ if i == 0 :
42+ answer [i ] = right [i + 1 ]
43+ continue
44+ if i == last_index :
45+ answer [i ] = left [i - 1 ]
46+ continue
47+ answer [i ] = left [i - 1 ] * right [i + 1 ]
48+
49+ return answer
Original file line number Diff line number Diff line change 1+ from typing import *
2+
3+
4+ class Solution :
5+ """
6+ ํ์ด:
7+ s์ t ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฉด anagram ์๋๋ฏ๋ก False๋ก early return
8+ set์ผ๋ก s์ ์ค๋ณต ๋ฌธ์ ์ ๊ฑฐ
9+ set์ ์ํํ๋ฉด์ ๊ฐ ๋ฌธ์๊ฐ s์ t์์ ๋ฑ์ฅํ๋ ํ์๊ฐ ๋์ผํ์ง ํ์ธ
10+ ๋ค๋ฅด๋ฉด False, ๋๊น์ง ํต๊ณผํ๋ฉด True
11+
12+ TC: O(n+m)
13+ - if len(s) != len(t): O(1)
14+ - ss = set(s): O(n)
15+ - for c in ss: ์ต๋ 26ํ ๋ฐ๋ณต โ O(1)
16+ - s.count(c): O(n)
17+ - t.count(c): O(m)
18+ - ์ต์ข
: O(n+m)
19+
20+ SC: O(n)
21+ - ss = set(s): ์ต์
์ ๊ฒฝ์ฐ O(n)
22+ - ๊ทธ ์ธ ์์: O(1)
23+ - ์ต์ข
: O(n)
24+ """
25+ def isAnagram (self , s : str , t : str ) -> bool :
26+ if len (s ) != len (t ):
27+ return False
28+
29+ ss = set (s )
30+ for c in ss :
31+ if s .count (c ) != t .count (c ):
32+ return False
33+
34+ return True
You canโt perform that action at this time.
0 commit comments