C语言 | Leetcode C语言题解之第390题消除游戏

题目:

题解:

cpp 复制代码
int lastRemaining(int n) {
    int a1 = 1;
    int k = 0, cnt = n, step = 1;
    while (cnt > 1) {
        if (k % 2 == 0) { // 正向
            a1 = a1 + step;
        } else { // 反向
            a1 = (cnt % 2 == 0) ? a1 : a1 + step;
        }
        k++;
        cnt = cnt >> 1;
        step = step << 1;
    }
    return a1;
}
相关推荐
学逆向的15 小时前
C 多文件开发
c语言·开发语言·网络安全
学逆向的15 小时前
C 内存属性
c语言·开发语言·算法·网络安全
Zwawa16 小时前
一盏 LED 不够用了:让同一盏灯说出不同的话
c语言·单片机·嵌入式
Nuanyt16 小时前
LeetCode Hot100 刷题笔记 · 普通数组专题
java·笔记·算法·leetcode
老王IT17 小时前
C语言语法基础语法介绍
c语言·开发语言·算法
水饺编程18 小时前
第2章:Linux 基础,在 root 中创建用户账号
linux·c语言·汇编·1024程序员节
春弦_18 小时前
LeetCode Hot 100 刷题笔记
笔记·leetcode·哈希算法
cu14318 小时前
细谈IT6563的具体功能与其应用
c语言·c++·单片机·嵌入式硬件
喜欢打篮球的普通人19 小时前
LLVM 前端与优化层:Clang 如何把 C 代码变成 IR
c语言·前端·状态模式
凯瑟琳.奥古斯特21 小时前
力扣1015C++解法技巧
c++·算法·leetcode·链表·职场和发展