码迷,mamicode.com
首页 > 其他好文 > 详细

【剑指offer】62、圆圈中最后剩下的数字

时间:2018-07-22 23:28:00      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:i++   题目   turn   class   ast   col   off   记录   style   

题目

0~n-1这n个数字排成一个圆圈,从0开始,每次删除第m个数字,求出圆圈里剩下的最后一个数字

思路

直接用数组模拟圆圈,模拟删除的过程

class Solution {
public:
    int LastRemaining_Solution(int n, int m)
    {
        if(n<1||m<1) return -1;
        int[] array = new int[n];
        int i = -1, step = 0, count = n;
        while(count > 0){   //跳出循环时将最后一个元素也设置为了-1
            i++;          //指向上一个被删除对象的下一个元素。
            if(i >= n)
                i = 0//模拟环。
            if(array[i] == -1)
                continue; //跳过被删除的对象。
            step++;                     //记录已走过的。
            if(step == m) {               //找到待删除的对象。
                array[i] = -1;
                step = 0;
                count--;
            }        
        }
        return i;//返回跳出循环时的i,即最后一个被设置为-1的元素
    }
};

 

【剑指offer】62、圆圈中最后剩下的数字

标签:i++   题目   turn   class   ast   col   off   记录   style   

原文地址:https://www.cnblogs.com/shiganquan/p/9351821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!