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;
}
相关推荐
芯联智造5 分钟前
【stm32简单外设篇】- 28BYJ-48 步进电机(配 ULN2003 驱动板)
c语言·stm32·单片机·嵌入式硬件
橘子真甜~42 分钟前
C/C++ Linux网络编程13 - 传输层TCP协议详解(面向字节流和有连接)
linux·运维·服务器·c语言·网络·c++·tcp/ip
lightqjx1 小时前
【算法】双指针
c++·算法·leetcode·双指针
历程里程碑1 小时前
C++ 7vector:动态数组的终极指南
java·c语言·开发语言·数据结构·c++·算法
sin_hielo1 小时前
leetcode 2147
数据结构·算法·leetcode
萌>__<新1 小时前
力扣打卡每日一题——缺失的第一个正数
数据结构·算法·leetcode
萌>__<新1 小时前
力扣打卡每日一题————零钱兑换
算法·leetcode·职场和发展
重生之后端学习1 小时前
238. 除自身以外数组的乘积
java·数据结构·算法·leetcode·职场和发展·哈希算法
MCU_wb2 小时前
RT Thread Studio创建CAN工程代码
c语言
Learner__Q2 小时前
每天五分钟:动态规划-LeetCode高频题_day2
算法·leetcode·动态规划