class Solution:
def asteroidCollision(self, asteroids: List[int]) -> List[int]:
stack = []
for a in asteroids:
while stack and stack[-1] >0 and a < 0:
diff = stack[-1] + a
if diff == 0:
stack.pop()
a = 0
elif diff < 0: # |stack[-1]| < |a|
stack.pop()
else: # diff > 0, |stack[-1]| > |a|
a = 0
# if a > 0: <-- 잘못된 풀이
# => 음수 소행성(a < 0)이 충돌 후 스택에 추가되지 않습니다.
if a: # if a >0 or a < 0 둘다 의미
stack.append(a)
return stack
class Solution:
def asteroidCollision(self, asteroids: List[int]) -> List[int]:
stack = []
for a in asteroids:
while stack and stack[-1] >0 and a < 0:
diff = stack[-1] + a
if diff == 0:
stack.pop()
a = 0
elif diff < 0: # |stack[-1]| < |a|
stack.pop()
else: # diff > 0, |stack[-1]| > |a|
a = 0
# if a > 0: <-- 잘못된 풀이
# => 음수 소행성(a < 0)이 충돌 후 스택에 추가되지 않습니다.
if a: # if a >0 or a < 0 둘다 의미
stack.append(a)
return stack
# class Solution:
# def asteroidCollision(self, asteroids: List[int]) -> List[int]:
# stack = []
# for a in asteroids:
# while stack and stack[-1] >0 and a < 0:
# diff = stack[-1] + a
# if diff == 0:
# stack.pop()
# a = 0
# elif diff < 0: # |stack[-1]| < |a|
# stack.pop()
# stack.append(a)
# else: # diff > 0, |stack[-1]| > |a|
# a = 0
# # if a > 0: <-- 잘못된 풀이
# # => 음수 소행성(a < 0)이 충돌 후 스택에 추가되지 않습니다.
# # if a: # if a >0 or a < 0 둘다 의미
# # stack.append(a)
# if a>0:
# stack.append(a)
# return stack
https://youtu.be/LN7KjRszjk4?si=hXG_JTtfDUMZyoD-
'LeetCode > Grind169' 카테고리의 다른 글
| 189. Rotate Array ☆★★★★ (0) | 2024.11.26 |
|---|---|
| Medium - 328. Odd Even Linked List (0) | 2024.11.15 |
| [LeetCode 75] Medium - 394. Decode String ★★★ (0) | 2024.11.14 |
| [LeetCode 75] Easy - 136. Single Number (0) | 2024.11.09 |
| DP1D: 198. House Robber ☆★★ (6) | 2024.11.07 |