1. 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 [分值:20]
您的回答:(空) (简答题需要人工评分)
package com.interview;
import java.util.*;
/**
* 量投科技
* 面试题1:
* 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,
* 问最后留下的是原来第几号的那位
*/
public class Test1 {
public static int result;
public static void main(String[] args) {
//得到一个数组,并且把数组按照顺序排好 如1 2 3 4 5
int[] n = new int[10];
for (int i = 0; i < n.length; i++) {
n[i] = i + 1;
}
//将数组中的数据放入到set集合中
List<Integer> list = new ArrayList<>();
for (int i : n) {
list.add(i);
}
System.out.println(list);
System.out.println("**************");
int x = 1;
int y = 0;
while (list.size() != 1) {
//关键点 x和y要同时变,一个变,另外一个也要跟着变
if (y >= list.size()) {
y = 0;
}
if (x >= 3) {
list.remove(y);
System.out.println(list);
x = 1;
} else {
x++;
y++;
}
}
System.out.println("*********************");
System.out.println(list);
}
}