classSolution{public:vector<int>asteroidCollision(vector<int>&asteroids){vector<int>stack;for(constinta:asteroids)if(a>0){stack.push_back(a);}else{// A < 0// Destroy previous positive one(s)while(!stack.empty()&&stack.back()>0&&stack.back()<-a)stack.pop_back();if(stack.empty()||stack.back()<0)stack.push_back(a);elseif(stack.back()==-a)stack.pop_back();// Both explodeelse// Stack.back() > current;// Destroy current, so do nothing}returnstack;}};
classSolution{publicint[]asteroidCollision(int[]asteroids){Stack<Integer>stack=newStack<>();for(finalinta:asteroids)if(a>0){stack.push(a);}else{// A < 0// Destroy previous positive one(s)while(!stack.isEmpty()&&stack.peek()>0&&stack.peek()<-a)stack.pop();if(stack.isEmpty()||stack.peek()<0)stack.push(a);elseif(stack.peek()==-a)stack.pop();// Both explodeelse// Stack.back() > current;// Destroy current, so do nothing}returnnewArrayList<>(stack).stream().mapToInt(i->i).toArray();}}
classSolution:defasteroidCollision(self,asteroids:List[int])->List[int]:stack=[]forainasteroids:ifa>0:stack.append(a)else:# A < 0# Destroy previous positive one(s)whilestackandstack[-1]>0andstack[-1]<-a:stack.pop()ifnotstackorstack[-1]<0:stack.append(a)elifstack[-1]==-a:stack.pop()# Both explodeelse:# stack[-1] > currentpass# Destroy current, so do nothingreturnstack