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";
        }
        
    }
}
相关推荐
benbenAItalk5 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
sunshine22 girl5 小时前
Java学习二 基本语法2, 算术运算符
java·学习
2601_966949655 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin5 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
2601_962885725 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
滕州市燕猫虎计算机科技工作室个体工商户5 小时前
Java锁
java·开发语言
多加点辣也没关系6 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2336 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean21036 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
零依赖极客6 小时前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm