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