首页 > 其他 > 详细

面试题六十二:圆圈中最后剩下的数字

时间:2020-03-29 17:43:12      阅读:43      评论:0      收藏:0      [点我收藏+]
 

在0-n-1这n个数中,每次从这个圈中删除第m个数字;
经典解法:链表;将模拟出环形链表结构后进行后进行相关的删除工作;直到只剩一个;也就是常规暴力解法;
创新解法:数学推导;
n>1时 f(n.m)=[f(n-1),m+m ] %n
n=1时候 f(n.m)==0;

 int f1(int  n,int m){
            if( n<1||m<1)
                return -1;
            int last=0;
            for(int i=2;i<=n;i++){
                last=(last+m)%i;    
            }
            return last;
        }

 

面试题六十二:圆圈中最后剩下的数字

原文:https://www.cnblogs.com/niliuxiaocheng/p/12593417.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!