首页 > 代码库 > 出圈问题
出圈问题
题目: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 722 * 下标为 : 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 }
出圈问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。