java算法碎片(一)[约瑟夫环]

来源:互联网 发布:path finder mac 破解 编辑:程序博客网 时间:2024/06/05 09:03

      大学课程上出现的经典题目,今天去面试又见到了,记录下来看看大家有没能更好的提升效率的办法.

      题目 : 一群人围成一圈,从1开始数,数到3的那个人离开,最后剩下的一人的最初编号是多少?

public class Looper {public static int getLooper(int[] _list,int _sayNo,int _beis){//记录环形集合int[] list = _list;//记录每个人喊出的数值int sayNo = _sayNo;//记录此次循环的1的数量int sum = 0;//记录此次循环的最后一个1的下标int subscript = 0;//循环for(int i=0; i<list.length; i++){sayNo = sayNo%_beis;if(list[i]==1){if(sayNo == 0){list[i] = 0;}subscript = i;sum++;sayNo++;}}//如果此次循环的1的数量大于1,递归;否则返回最后一个1的下标.if(sum>1){return getLooper(list,sayNo,_beis);}else{return subscript;}}public static void main(String[] args){int[] list = {1,1,1,1,1,1,1,1,1,1,1,1};System.out.println(getLooper(list,1,3));}}


原创粉丝点击