leetcode649队列操作Dota2

  • 基本操作

入队:

queue.push()
queue.push_back()//两者效果相同

出队:

queue.pop();
queue.pop_back();//都从尾部操作

考虑两个因素:1.每个参议员的决定都由之后的参议员决定  2.决定禁用之后都不能在投票

复制代码
queue<int>radiant,dire;//使用两个队列去记录参会的议员再队列中的投票顺序
for(int i=0;i<n;++i){
    if(senate[i]=='R') radiant.push(i);
    if(senate[i]=='D')dire.push(i);
}
while(!radiant.empty()&&!dire.empty()){
     if(radiant.front()>dire.front()){
        dire.push(dire.front()+n);//加n是因为要重新排队,在前面说明不会被淘汰
    } else{
        radiant.push(radiant.front()+n);
    } 
     radiant.pop();
      dire.pop();//1.因为被禁言所以要淘汰2.没有被禁言的因为重新在之后排队所以也要删除现在的位置 
}
return !radiant.empty()?"Radiant":"Dire";
复制代码

 

posted @   iu本u  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示