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;
}
相关推荐
Escalating_xu3 小时前
【C 语言】操作符详解(下):逗号、下标、结构体、类型转换与表达式求值
c语言
晓蛋4 小时前
C语言条件编译精讲
c语言·条件编译·宏定义·代码移植·预处理程序
ggaofeng5 小时前
Ctrl+C结束进程是如何实现的
服务器·c语言·网络
水饺编程5 小时前
第1章:开发环境搭建,在 Windows 中安装 QEMU
c语言·汇编
沐晓时光7 小时前
C语言入门,深入理解指针(1)
c语言·开发语言
天l志7 小时前
DL/T 645—2007《多功能电能表通信协议》的跨平台 C 语言实现
c语言·电表·dlt645
0+1118 小时前
算法 --模拟
c++·算法·leetcode
Nil2089 小时前
leetcode 739每日温度
算法·leetcode·职场和发展
老王爱玩车9 小时前
工具函数——清空输入缓冲区
c语言·开发语言·学习
xqqxqxxq10 小时前
LeetCode Hot100 矩阵专题题解笔记
笔记·leetcode·矩阵