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);
}
}