首页 > 学院 > 开发设计 > 正文

390. Elimination Game

2019-11-06 06:53:02
字体:
来源:转载
供稿:网友

刚开始看这道题的时候,没有思路,本打算通过求解前几个数字,得到规律性的结论,失败了。所以打算暴力求解,但估摸着时间复杂度和空间复杂度都非常高,应该AC不了,于是参考了discuss,amazing。。利用了处理完的数组永远是个等差数列的特性,存储开头,步长和长度就可以完全表示一个等差数列了。

class Solution {public: int lastRemaining(int n) { int start=1; int step=1; int length=n; bool isLeft=true; while(length!=1) { if((isLeft==true)||(isLeft==false&&(length%2==1))) start+=step; step*=2; length/=2; isLeft=!isLeft; } return start; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表