算法每日一题——第七天——消除游戏

简介: 算法每日一题——第七天——消除游戏


原题链接:力扣

分析:

输入一个n,我们就要对1到n的所有数就行消除。我在看见这道题最开始的想法是将1到n的所有数装到一个数组里面,被消除的数标记为-1,再进行下一次消除时遇见-1就跳过,但是这样写会非常麻烦。

我们先观察上面的样例:

第一次:1,2,3,4,5,6,7,8,9

第二次:2,4,6,8

第三次:2,6

第四次:6

可以发现每次的结果都是一个等差数列,第一次公差为1,第二次公差为2,第三次公差为4。公差的变化规律很容易发现(每次扩大两倍)。那我们就可以思考,是否可以用数列首项,尾项,公差来表示一组数呢?(后面用a1,an,d来分别表示首项,尾项和公差)

如果我们能找出首项和尾项的变化规律,那么我们就可以用他们来表示一组数了。

不难发现以下规律:

从左开始删:有偶数个整数时,a1 = a1 + d ; an = an(不变)

                     有奇数个整数时,a1 = a1 + d ; an = an - d

从右开始删:有偶数个整数时,a1 = a1(不变) ; an = an - d

                     有奇数个整数时,a1 = a1 + d ; an = an - d

找到以上规律,这道题就非常容易了。

接口代码:

int lastRemaining(int n)
{
    int a1 = 1;
    int an = n;
    int d = 1;
    while(1)
    {
        if(n == 1)
        return a1;
        if(n % 2 == 0)
        a1 += d;
        else
        {
            a1 += d;
            an -= d;
        }
        d *= 2;
        n /= 2;
        if(n == 1)
        return a1;
         if(n % 2 == 0)
         an -= d;
         else
        {
            a1 += d;
            an -= d;
        }
        d *= 2;
        n /= 2;
    }   
}
相关文章
|
7月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
984 0
|
2月前
|
人工智能 算法 Java
【搜索算法】数字游戏(C/C++)
【搜索算法】数字游戏(C/C++)
|
4月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
54 1
|
4月前
|
算法
互动游戏解决遇到问题之基于射线投射寻路算法的问题如何解决
互动游戏解决遇到问题之基于射线投射寻路算法的问题如何解决
|
4月前
|
算法 Python
【python】python基于 Q-learning 算法的迷宫游戏(源码+论文)【独一无二】
【python】python基于 Q-learning 算法的迷宫游戏(源码+论文)【独一无二】
|
6月前
|
算法 数据挖掘 开发者
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
|
6月前
|
算法 JavaScript 前端开发
【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
90 1
|
6月前
|
算法
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
|
6月前
|
算法 机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
|
6月前
|
SQL 算法 数据可视化
python 贪心算法 动态规划实现 跳跃游戏ll【力扣题45】
python 贪心算法 动态规划实现 跳跃游戏ll【力扣题45】
下一篇
DataWorks