50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?在原来的

50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?在原来的位置是多少(简单易懂)

分类:数据结构

由于每次去掉元素以后,元素的个数会少一个,因此下一个3的倍数其实只需要走两步,在为其下标赋值的时候,需要减一,保持每次去掉的元素都是3的倍数。

public class CycleTest {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("该数字原来的位置是:" + cycle(5,3));}private static int cycle(int total, int k) {List<Integer> dataList = new LinkedList<Integer>();for (int i = 0; i < total; i++) {dataList.add(new Integer(i+1));}int index = -1;while (dataList.size()>1) {index = (index + k)%dataList.size();dataList.remove(index–);displayList(dataList);System.out.println();}return ((Integer)dataList.get(0)).intValue();}private static void displayList(List<Integer> dataList) {for (int i = 0; i < dataList.size(); i++) {int a = dataList.get(i);System.out.print(a + " ");}}}

大家可以简单的测试下,比如测试5个数,当个数比较少的时候更能理解其原理。

参考文章:

版权声明:本文为博主原创文章,,未经博主允许不得转载。

上一篇打造一款亿级应用你会碰到哪些问题?

顶0踩0

告诉自己,我这次失败了,

50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?在原来的

相关文章:

你感兴趣的文章:

标签云: