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;
}
相关推荐
tkevinjd2 小时前
图论\dp 两题
leetcode·动态规划·图论
XH华3 小时前
C语言第九章字符函数和字符串函数
c语言·开发语言
♞沉寂6 小时前
信号以及共享内存
linux·c语言·开发语言
1白天的黑夜16 小时前
链表-2.两数相加-力扣(LeetCode)
数据结构·leetcode·链表
上海迪士尼356 小时前
力扣子集问题C++代码
c++·算法·leetcode
SunnyKriSmile6 小时前
【冒泡排序】
c语言·算法·排序算法
熬了夜的程序员6 小时前
【LeetCode】16. 最接近的三数之和
数据结构·算法·leetcode·职场和发展·深度优先
Miraitowa_cheems6 小时前
LeetCode算法日记 - Day 15: 和为 K 的子数组、和可被 K 整除的子数组
java·数据结构·算法·leetcode·职场和发展·哈希算法
_poplar_8 小时前
08.5【C++ 初阶】实现一个相对完整的日期类--附带源码
c语言·开发语言·数据结构·c++·vscode·算法·vim