forked from DaleStudy/leetcode-study
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhaklee.py
More file actions
65 lines (58 loc) Β· 3.5 KB
/
haklee.py
File metadata and controls
65 lines (58 loc) Β· 3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
"""TC: O(n), SC: O(1)
β» μ½λλ₯Ό λ³΄κ³ λμΆ© λ νλμ§ κ°μ μ‘μ λ€μμ μλμ μμ΄λμ΄μμ p, n ꡬκ°μ΄ λμ€λ λΆλΆλ§ 보면
μ’ λ λΉ λ₯Έ μ΄ν΄κ° κ°λ₯νλ€.
μμ΄λμ΄:
- κ³±μ 0μ΄ μμ΄λ©΄ μ무리 λ§μ μλ₯Ό κ³±ν΄λ κ²°κ³Όλ 0μ΄λ€.
- 0μ΄ λ±μ₯νμ§ μλ μ΄λ€ subarrayκ° μ£Όμ΄μ‘λ€κ³ νμ.
- μ¬κΈ°μ μμκ° μ§μ λ² λ±μ₯νλ©΄ λͺ¨λ μ«μλ₯Ό κ³±ν κ²μ΄ κ°μ₯ ν° κ³±μ΄ λλ€.
- μμκ° νμ λ², μ΄ rλ² λ±μ₯νλ€κ³ ν΄λ³΄μ. μ΄ λ°°μ΄μ λ€μκ³Ό κ°μ΄ ꡬ쑰νν μ μλ€.
- μμλ₯Ό p, μμλ₯Ό nμ΄λΌκ³ νννμ.
- μ΄ λ°°μ΄μ [p, ..., p, n, p, ... p, n, ..., n, p, ..., p] κΌ΄λ‘ ννμ΄ κ°λ₯νλ€.
μ΄λ, nμ μ΄ rλ² λ±μ₯νκ³ , nμ pκ° μ¬λ¬ λ²(0λ²λ κ°λ₯) λ±μ₯νλ λ¬Άμ μ¬μ΄μ μ‘΄μ¬νλ€.
- pκ° μ¬λ¬ λ²(0λ²λ κ°λ₯) λ±μ₯νλ κ²μ PλΌκ³ λ¬Άμ΄μ νννλ©΄ μλμ κ°μ΄ λ³Ό μ μλ€.
- [(P), n, (P), n, ..., n, (P), n, (P)]
- nμ μ§μ λ² κ³±ν΄μΌ μμκ° λμ¨λ€. μ°μλ κ°μ μ΅λν λ§μ΄ κ³±νλ €κ³ νλ―λ‘, νμͺ½ λμ
λ±μ₯νλ nμ λΊ λλ¨Έμ§ nλ€μ κ³±νλ κ²μ΄ κ°μ₯ μ’μ μ λ΅μ΄λ€.
- μμ μ λ΅μ λ°λΌ λ°°μ΄μ μ«μλ₯Ό κ³±νλ €κ³ νλ©΄ λ€μ λ μ€ νλκ° κ°μ₯ ν° μ«μλ€.
- [(P), n, (P), n, ..., n, (P), n, (P)]
βββββββββββββββββββββββββ
μ΄ κ΅¬κ°μ μ«μλ€μ λͺ¨λ κ³±ν¨
- [(P), n, (P), n, ..., n, (P), n, (P)]
βββββββββββββββββββββββββ
μ΄ κ΅¬κ°μ μ«μλ€μ λͺ¨λ κ³±ν¨
- μ¦, μμμλΆν° μ«μλ₯Ό κ³μ κ³±νλ©΄μ maxκ°μ μ°Ύμ κ², νΉμ λ€μμλΆν° μ«μλ₯Ό κ³μ
κ³±νλ©΄μ maxκ°μ μ°Ύμ κ², λ μ€ νλκ° μμ ꡬκ°μμμ μ΅λ κ³±μ
κ°μ΄ λλ€.
- μ°λ¦¬μκ² μ£Όμ΄μ§ μ 체 arrayλ λ€μκ³Ό κ°μ΄ νν κ°λ₯νλ€.
- 0μ΄ λ±μ₯νμ§ μλ κΈΈμ΄ 1 μ΄μμ subarrayλ₯Ό (S), 0μΌλ‘λ§ μ΄λ£¨μ΄μ§ κΈΈμ΄ 0 μ΄μμ subarrayλ₯Ό
(0)μ΄λΌκ³ νλ©΄ μλμ κ°μ΄ ννμ΄ κ°λ₯νλ€.
- [(0), (S), (0), (S), ..., (S), (0), (S), (0)]
- μ 체 arrayμμ μ΅λ subarray κ³±μ 0μ΄κ±°λ, νΉμ μμ κ° Sμμμ μ΅λ κ³±λ€ μ€ μ΅λ κ°μ΄λ€.
- μμ μμ΄λμ΄λ₯Ό νμ©νλ©΄ λ€μμ λ°©μμΌλ‘ μ΅λ subarrayμ κ³±μ μ°Ύμ μ μλ€.
- numsμ μμμλΆν° μ«μλ₯Ό νλμ© κ³±ν΄κ°λ©΄μ μ΅λ κ³±μ μ°Ύμ. λ¨, μ€κ°μ 0μ΄ λμμ μ΅λ κ³±
κ°μ΄ 0μ΄ λμμ κ²½μ° μ΄λ₯Ό λ€μ 1λ‘ λ°κΏμ€μ μμ μμ΄λμ΄λ₯Ό μ μ©ν μ μλλ‘ μΈν
.
- λκ°μ μμ
μ numsμ λ€μμλΆν° μ«μλ₯Ό νλμ© κ³±ν΄κ°λ©΄μ μ§νν¨.
SC:
- solutionμ μ μ₯νλ λ°μ O(1).
- κ³±μ
κ°μ μ μ₯νλ λ°μ O(1).
- μ΄ O(1).
TC:
- 리μ€νΈλ₯Ό μμμλΆν° μννλ©΄μ κ³±/max μ°μ°. O(n).
- 리μ€νΈλ₯Ό λ€μμλΆν° μννλ©΄μ κ³±/max μ°μ°. O(n).
- μ΄ O(n).
"""
class Solution:
def maxProduct(self, nums: List[int]) -> int:
sol = nums[0]
p = 1
for i in nums:
if p == 0:
p = 1
p *= i
sol = max(p, sol)
p = 1
for i in reversed(nums):
if p == 0:
p = 1
p *= i
sol = max(p, sol)
return sol