File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed
product-of-array-except-self Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution :
2+ # Space complexity: O(n)
3+ # Time complexity: O(n)
4+ def _v1 (self , nums : list [int ]) -> list [int ]:
5+ prefix = [1 ]
6+ for num in nums [:- 1 ]:
7+ prefix .append (prefix [- 1 ] * num )
8+
9+ reverse_nums = nums [::- 1 ]
10+ postfix = [1 ]
11+ for num in reverse_nums [:- 1 ]:
12+ postfix .append (postfix [- 1 ] * num )
13+ postfix = postfix [::- 1 ]
14+
15+ return [prefix [i ] * postfix [i ] for i in range (len (nums ))]
16+
17+ # Space complexity: O(1)
18+ # Time complexity: O(n)
19+ def _v2 (self , nums : list [int ]) -> list [int ]:
20+ n = len (nums )
21+ answer = [1 ] * n
22+
23+ # 1. save prefix product to temp
24+ temp = 1
25+ for i in range (1 , n ):
26+ temp *= nums [i - 1 ]
27+ answer [i ] *= temp
28+
29+ # 2. save postfix product to temp
30+ temp = 1
31+ for i in range (n - 2 , - 1 , - 1 ):
32+ temp *= nums [i + 1 ]
33+ answer [i ] *= temp
34+
35+ return answer
36+
37+
38+ def productExceptSelf (self , nums : List [int ]) -> List [int ]:
39+ # index -> product
40+ # 0 -> - [1, 2, 3]
41+ # 1 -> [0] - [2, 3]
42+ # 2 -> [0, 1] - [3]
43+ # 3 -> [0, 1, 2] -
44+ return self ._v2 (nums )
45+
46+
You can’t perform that action at this time.
0 commit comments