本帖最后由 冒牌高手 于 2014-10-27 21:14 编辑
求大神给看看有没有错误,自己看了下10个人和15个人的没有错误
[code]/*
* 思路:用链表,增删快,里面有一个小循环,从1到3的循环,如果到3了就让指针变为1,再 继续
* 最后如果剩下的人不到3个了就重复,3个循环的指针定义的范围要广一点吧
* 居然成功了....
*/
import java.util.LinkedList;
import java.util.List;
public class ThrowTowel {
public static void main(String[] args) {
getNum();
}
public static void getNum(){
List<Integer> list=getLinkedList();
int flag=1;
int index=0;
while(list.size()>1){
if(flag==3){
//永远不会出现这个情况了,所以可以删去了
/*if(index==list.size())
index=list.size()-1;*/
System.out.println(list.remove(index));
index-=1;
flag=0;
}
index++;
flag++;
//下面是指针还原,如果大于等于size了就应该从0角标开始
if(index>=list.size()){
index=0;
}
}
System.out.println(list);
}
//这里代表从1到N的一圈人
public static List<Integer> getLinkedList(){
List<Integer> list=new LinkedList<Integer>();
for(int i=1;i<=15;i++){
list.add(i);
}
return list;
}
}
|
|