🟡 剑指 Offer II 037. 小行星碰撞
LeetCode 提示
题目难度 中等
原题链接 🔗 leetcode
#
题解1用栈来搞。只要重点关注栈顶为正且入栈数为负的情况即可。其他情况都不会碰。
class Solution { public int[] asteroidCollision(int[] asteroids) { var ans = new LinkedList<Integer>(); for (int ast : asteroids) { if (ans.isEmpty()) { ans.add(ast); continue; }
var allowIn = true; while (!ans.isEmpty() && ans.getLast() > 0 && ast < 0) { var last = ans.getLast(); if (last + ast > 0) { allowIn = false; break; } if (last + ast == 0) { ans.removeLast(); allowIn = false; break; } if (last + ast < 0) { ans.removeLast(); } } if (allowIn) { ans.add(ast); } }
int n = ans.size();
var res = new int[n]; for (int i=0; i<n; i++) { res[i] = ans.get(i); } return res; }}