• 题目:50个人围城一圈数到3和3的倍数时出圈,问剩下的人是谁?原来的位置是多少?


    重复循环使用取余的方法:

    复制代码
     1 import java.util.LinkedList;
     2 import java.util.List;
     3 
     4 
     5 public class Main {
     6     public static void main(String[] args) {
     7         System.out.println("该数字原来的位置是:" + cycle(50, 3));
     8     }
     9     
    10     public static int cycle(int total, int k){
    11         List<Integer> dataList = new LinkedList<>();
    12         for(int i = 0; i< total;i++){
    13             dataList.add(i+1);
    14         }
    15         int index = -1;
    16         
    17         while(dataList.size() > 1){
    18             index = (index + k) % dataList.size();
    19             /*
    20              * 当删除一个元素后,由于dataList中后面元素的下标都减一,所以index也需要减一
    21              * 元素为:    1 2 3 4 5 6 7
    22              * 下标为 :   0 1 2 3 4 5 6 index=2时,删除第3个元素
    23              * 下标变为    0 1   2 3 4 5  index需要退回删除元素的前一个位置所以(index--)
    24              * 
    25              */
    26             dataList.remove(index--);
    27         }
    28         return dataList.get(0);
    29     }
    30 }
    复制代码
  • 相关阅读:
    时间日期date/cal
    chown命令
    su命令
    which命令和bin目录
    python基础之文件操作
    python之模块之shutil模块
    python基础之面向对象01
    python基础之面向对象02
    python基础之map/reduce/filter/sorted
    python基础之模块之序列化
  • 原文地址:https://www.cnblogs.com/bb3q/p/4529618.html
Copyright © 2020-2023  润新知