今年7月份vivo迎来了新入职的大学生,现在需要为每个新同事分配一个工号。人力资源部同事小v设计了一个方法为每个人进行排序并分配最终的工号,具体规则是:
将N(N<10000)个人排成一排,从第1个人开始报数;如果报数是M的倍数就出列,报到队尾后则回到队头继续报,直到所有人都出列;
最后按照出列顺序为每个人依次分配工号。请你使用自己擅长的编程语言帮助小v实现此方法。
private static String solution(int[] input) {
// TODO Write your code here
int N = input[0];
int M = input[1];
List<Integer> list = new ArrayList<>();
StringBuffer sb = new StringBuffer();
for(int i=1;i<=N;i++){
list.add(i);//构造数组1~N
}
int count = 0;//存储上一个分配到工号的人的位置
for(int i=1;list.size()>1;i++){
if(i%M==0){
sb.append(list.remove(count)+" ");
}else{
count++;
}
if(count>=list.size()){
count = count - list.size();
}
}
sb.append(list.get(0));
return sb.toString();
//return null;
}