您的位置:首页 > 职场人生

剑指offer——面试题45:圆圈中最后剩下的数字(孩子们的游戏)

2018-03-26 11:18 281 查看

剑指offer——面试题45:圆圈中最后剩下的数字(孩子们的游戏)

Solution1:自己想的垃圾算法

class Solution {
public:
int LastRemaining_Solution(int n, int m) {
vector<int> nums(n,0);
int temp_count = 0, count = 0, i = 0; //nums[]初始化为n个0,temp_count检查是否到了m,count检查数组中1的数目是否到了n-1,i是计数用的
while(count < n - 1) {
if(nums[i] == 0) { //nums[i] == 0的情况,temp_count计数+1
temp_count++;
if(temp_count == m) { //temp_count到了m
nums[i] = 1;
count++;
temp_count = 0;
i++;
if(i == n)
i = 0;
}
else { //temp_count未到m
i++;
if(i == n)
i = 0;
}
}
else { //nums[i]==1的情况,直接跳过
i++;
if(i == n)
i = 0;
}
}
for(i = 0; i < n; i++){
if(nums[i] == 0)
return i;
}
return -1; //无解情况返回-1,一般都这样
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: