首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

大家帮帮忙啊看看哪位高手的方法最好

2012-02-16 
大家帮帮忙啊!!!看看谁的方法最好500个小孩子,手拉手围成一个圈,从1开始数,每数到3的时候,那第3个小孩子退

大家帮帮忙啊!!!看看谁的方法最好
500个小孩子,手拉手围成一个圈,
从1开始数,每数到3的时候,那第3个小孩子退出圈,
让后又从1开始点数,循环下去,问最后留下的那个小孩子,
是500个小孩的第几个

[解决办法]
刚才那个性能不大好哦,呵呵

Java code
import java.util.LinkedList;import java.util.List;public class Temp{    public static void main(String args[])    {        System.out.println(getLastOne(500, 3));    }        public static int getLastOne(int length, int del)    {        List<Integer> list = new LinkedList<Integer>();                for(int i = 1; i <= length; i++)        {            list.add(i);        }                while(list.size() > 1)        {            delOne(list, del);        }                return list.get(0);    }        public static void delOne(List<Integer> list, int del)    {        for(int i = 0; i < del - 1; i++)        {            list.add(list.get(i));        }                for(int i = 0; i < del; i++)        {            list.remove(0);        }    }}
[解决办法]
Java code
import java.util.*;public class TestCollection{    public static void main(String[] args)    {        ArrayList<Integer> list = new ArrayList<Integer>();        for (int i = 1; i <= 500; i++)        {            list.add(i);        }        int k = 0;        while (list.size() > 1)        {            if (k >= list.size())                k = list.size() - 1;            if (k > list.size() - 3)            {                k = k + 2 - list.size();            }            else            {                k += 2;            }            System.out.println(list.get(k));            list.remove(k);        }        System.out.println("It's me!" + list.get(0));    }} 

热点排行