File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed
product-of-array-except-self Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change
1
+ # https://leetcode.com/problems/product-of-array-except-self/
2
+
3
+ from typing import List
4
+
5
+ class Solution :
6
+ def productExceptSelf1 (self , nums : List [int ]) -> List [int ]:
7
+ """
8
+ [Complexity]
9
+ - TC: O(n)
10
+ - SC: O(n)
11
+
12
+ [Approach]
13
+ division operation ์์ด ๊ฐ ์์๋ง๋ค ์๊ธฐ ์์ ์ ์ ์ธํ ๋ชจ๋ ๊ฐ์ ๊ณฑ์ ๊ตฌํด์ผํ๋ฏ๋ก, ๋ค์์ ์์๋ก ์ํํ ์ ์๋ค.
14
+ 1) ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ํํ๋ฉด์ ๊ฐ ์์๋ณด๋ค ์ผ์ชฝ์ ์๋ ๊ฐ๋ค์ ๊ณฑ์ผ๋ก left ๋ฐฐ์ด ์ฑ์ฐ๊ธฐ
15
+ 2) ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ํํ๋ฉด์ ๊ฐ ์์๋ณด๋ค ์ค๋ฅธ์ชฝ์ ์๋ ๊ฐ๋ค์ ๊ณฑ์ผ๋ก right ๋ฐฐ์ด ์ฑ์ฐ๊ธฐ
16
+ 3) left์ right ๋ฐฐ์ด์ ์์๋ง๋ค ๊ณฑ์ ๊ตฌํด์ ๊ฒฐ๊ณผ ๋ฐฐ์ด ๋ฐํํ๊ธฐ
17
+ """
18
+ n = len (nums )
19
+
20
+ left = [1 ] * n
21
+ for i in range (1 , n ):
22
+ left [i ] = left [i - 1 ] * nums [i - 1 ]
23
+
24
+ right = [1 ] * n
25
+ for i in range (n - 2 , - 1 , - 1 ):
26
+ right [i ] = right [i + 1 ] * nums [i + 1 ]
27
+
28
+ return [l * r for l , r in zip (left , right )]
29
+
30
+ def productExceptSelf (self , nums : List [int ]) -> List [int ]:
31
+ """
32
+ [Complexity]
33
+ - TC: O(n)
34
+ - SC: O(n) (O(1) extra space)
35
+
36
+ [Approach]
37
+ follow up ์กฐ๊ฑด์ ์ํด์๋ ์ฒซ ๋ฒ์งธ ํ์ด์ฒ๋ผ left, right ๋ฐฐ์ด์ ๋๋ฉด ์ ๋๊ณ , res ๋ฐฐ์ด์์ ๊ฐ์ ์
๋ฐ์ดํธ ํด๋๊ฐ์ผ ํ๋ค.
38
+ ์ด๋, O(1) space๋ฅผ ์ํด์ ๋ณ์ prev๋ฅผ ์ฌ์ฉํ์ฌ, ์ํ ์งํ ๋ฐฉํฅ ๊ธฐ์ค ์ด์ ๊ฐ๋ค์ ๊ณฑ์ ํธ๋ํนํด๋๊ฐ๋ฉด ๋๋ค.
39
+ 1) nums๋ฅผ ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ํํ๋ฉด์ res ๋ฐ prev ๊ฐ ์
๋ฐ์ดํธ
40
+ 2) nums๋ฅผ ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ผ๋ก ์ํํ๋ฉด์ res ๋ฐ prev ๊ฐ ์
๋ฐ์ดํธ
41
+ """
42
+ n = len (nums )
43
+ res = []
44
+
45
+ prev = 1
46
+ for i in range (n ):
47
+ res .append (prev )
48
+ prev *= nums [i ]
49
+
50
+ prev = 1
51
+ for i in range (n - 1 , - 1 , - 1 ):
52
+ res [i ] *= prev
53
+ prev *= nums [i ]
54
+
55
+ return res
You canโt perform that action at this time.
0 commit comments