论坛看到面试题:
原链接:http://www.iteye.com/topic/954262
如何编程实现:输入M,N两个数,从1至N开始循环数数,每数到M输出该数值,直至全部输出。例如M是3,N是20,那么相当有20个人,1,2,3循环报数,数到3的就打印出他的序号,直到所有这20个数全部输出为止。
LinkedList<Integer> a3=new LinkedList<Integer>();
//初始化数据
for(int i=1;i<5;i++){
a3.add(i);
}
int m=6;
int k=1;
while(!a3.isEmpty()){
if(k%m==0){
System.out.println("出列:"+a3.removeFirst()+" 剩余人数:"+a3.size());
}else{
a3.add(a3.poll());
}
k++;
}
从时间复杂度来看,上面的算法应该是java能实现比较优秀的算法了