/*
* @lc app=leetcode.cn id=735 lang=javascript
*
* [735] 小行星碰撞
*/
// @lc code=start
/**
* @param {number[]} asteroids
* @return {number[]}
*/
var asteroidCollision = function (asteroids) {
const stack = [];
for (let ast of asteroids) {
const top = stack[stack.length - 1];
if (!top || top * ast > 0 || (top < 0 && ast > 0)) {
stack.push(ast);
continue;
}
while (stack.length && stack[stack.length - 1] > 0 && ast < 0) {
if (Math.abs(stack[stack.length - 1]) > Math.abs(ast)) {
break;
}
if (Math.abs(stack[stack.length - 1]) === Math.abs(ast)) {
stack.pop();
break;
}
stack.pop()
// 如果栈空了,则直接添加,并退出 while 循环
if (stack.length === 0) {
stack.push(ast);
break;
}
if (stack[stack.length - 1] < 0 && ast < 0) {
stack.push(ast)
}
}
}
return stack;
};
// @lc code=end
// console.log(asteroidCollision([5, 10, -5]))
// console.log(asteroidCollision([8, -8]))
// console.log(asteroidCollision([10, 2, -5]))
// console.log(asteroidCollision([-2, -1, 1, 2]))
// console.log(asteroidCollision([-2, -2, 1, -2]))
// console.log(asteroidCollision([-2, 1, 1, -1]))
console.log(asteroidCollision([1, -2, -2, -2]))