2026年--Lc332-649. Dota2 参议院(队列)--java版

1.题目


2.思路

把所有下标看成时间线:

第一轮时间:0,1,2,...,n-1

第二轮时间:n,n+1,...,2n-1

第三轮时间:2n,...

某人第一次在 i 时刻行动,下一次自然在 i+n,再下一次 i+2n......

队列就是在维护"谁下一次最早行动"。

放队尾:表示"他还活着,下一轮还会回来投票"

+n:表示"他的下一次出场发生在下一轮(排到本轮所有人后面)"

3.代码实现

java 复制代码
class Solution {
    public String predictPartyVictory(String senate) {
        int n=senate.length();
        Queue<Integer> ra=new ArrayDeque<Integer>();
        Queue<Integer> di=new ArrayDeque<Integer>();
        for(int i=0;i<n;i++)
        {
            if(senate.charAt(i)=='R')
            {
                ra.offer(i);
            }else{
                di.offer(i);
            }
        }
        while(!ra.isEmpty()&&!di.isEmpty())
        {
            int raInndex=ra.poll();
            int diIndex=di.poll();
            if(raInndex<diIndex)
            {//坐标小的,可以投敌方的反对票。
            //并且可以在下一轮再投敌方反对票,所以要+队列的长度,放在队尾
                ra.offer(raInndex+n);
            }else{
                di.offer(diIndex+n);
            }
        }
        if(!ra.isEmpty())
        {
            return  "Radiant";
        }else{
            return  "Dire";
        }
        
    }
}
相关推荐
Sarvartha5 小时前
final 关键字
java·开发语言
2601_952047795 小时前
单一策略深度教程:用轻易云把集成任务的报错实时推送到钉钉机器人
java·机器人·钉钉
程序员Sunday6 小时前
JavaScript 事件循环面试题,宏任务与微任务怎么执行|Sunday面试指南
开发语言·javascript·面试·校招·事件循环·程序员sunday
数据狐(Datafox)6 小时前
淘宝图片搜索 API 落地实战:基于以图搜货搭建跨境电商选品系统
java·大数据·微服务
zhangzeyuaaa7 小时前
Ruby 多线程、GVL(GIL)与 Mutex 完全指南
开发语言·前端·ruby
谢亮_vipxieliang8 小时前
用 PHP 构建轻量级 REST API:从路由到鉴权的完整实践
开发语言·后端·php
Escalating_xu8 小时前
【C 语言】数据在内存中的存储:补码、大小端、整型陷阱与 IEEE 754 全解析
java·c语言·网络
思无邪668 小时前
用 AI 做 JS 逆向:从抓包到复现的完整方法论
开发语言·javascript·人工智能