【leetcode 每日打卡】390. 消除游戏

【leetcode 每日打卡】390. 消除游戏,第1张

【leetcode 每日打卡】390. 消除游戏

int lastRemaining(int n){
    int a1=1,k=0,step=1,cnt=n;//首项,循环次数,步长,数组长度
    while(cnt>1){
        if(k%2==0||cnt%2==1){
            a1+=step;
        k++;
        cnt = cnt>>1;
        step = step<<1;
    }
    return a1;
}

满足以下两个条件首项会被抹除且向后移动step位
1.循环次数为偶数
2.循环次数位奇数且总长为奇数
每次循环,数组长度cnt/2,步长step*2
总长为1停止循环

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5691688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存