当前位置: 代码迷 >> J2SE >> 大家帮帮忙啊看看哪位高手的方法最好
  详细解决方案

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

热度:85   发布时间:2016-04-24 13:02:31.0
大家帮帮忙啊!!!看看谁的方法最好
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));    }}
  相关解决方案