leetcode735行星碰撞vector模拟栈操作

发布时间 2023-06-15 16:58:16作者: iu本u

vector的基本操作:

vector<int >v;
v.back();//获取尾部数据
v.front();//获取首部数据
v.push_back(3);//在尾部加入数据3
v.pop_back();//弹出尾部数据

首先只有前一个行星向右走,后一个行星向左走才可能相撞。也就是一正一负的组合

使用一个变量aliva记录当前行星是否会被销毁,注意这种情况先是枚举各个行星;

for(auto aster:asteroids){
  int alive=true;//记录每个行星开始是存活的
  while(alive&&!v.empty&&aster<0&&v.back()>0){//v是撞击后还存活的行星
      alive=-aster>v.back();
       if(-aster>=v.back()){
        v,pop_back();//v中的最后一个行星都需要被销毁
    }
         if(alive)v.push_back(aster);   //还存活放入v中     
  }    
}