题解 | C# #孩子们的游戏(圆圈中最后剩下的数)#

孩子们的游戏(圆圈中最后剩下的数)

http://www.nowcoder.com/practice/f78a359491e64a50bce2d89cff857eb6

public int LastRemaining_Solution(int n, int m)
{
    if(n<=0||m<1)return -1;
    List<int> list = new List<int>();//用List模拟循环链表
    for(int i =0;i<n;i++)
    {
        list.Add(i);//把小朋友的编号赋值
    }
    int cur = -1;//用cur来表示当前报数的索引
    while(list.Count>1)
    {
        for(int i =0;i<m;i++)//每次移动m个小朋友,第m个就是要报数的
        {
            ++cur;//第一个小朋友编号0,cur=-1+1=0,后面每次报数以此类推++
            if(cur == list.Count)cur = 0;//cur代表数组下标,下标最大为list.Count-1,因此此时这个报数者应该回到List头,即List[0]             
        }
        list.Remove(list[cur]);//完整移动一次,remove一次;
        cur--;   //当前元素删除了,后面的元素会移动上来,所以让cur--,这样下一个就是正确的人
    }
    return list[0];//只剩下一个人了,所以返回这个小朋友的编号就对了
}
全部评论

相关推荐

点赞 评论 收藏
分享
野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务