题解 | #二维数组中的查找#
环形链表的约瑟夫问题
http://www.nowcoder.com/practice/41c399fdb6004b31a6cbb047c641ed8a
直接暴力解法,用List模拟整个过程
import java.util.*;
public class Solution {
/**
*
* @param n int整型
* @param m int整型
* @return int整型
*/
public int ysf (int n, int m) {
// write code here
List<Integer> list = new LinkedList<>();
for(int i = 1; i <= n; i++) {
list.add(i);
}
int index = -1; // 如果为0的话,count为1时index也为1,而1在链表中代表第二个数
while(list.size() > 1) {
int count = 0; // 用作计数
while(count < m) {
count++;
index++;
if(index == list.size()) { // 如果index到了最后一个,就把index重置为第一个
index = 0;
}
}
list.remove(index);
index--; // 比如1,2,3,4,5 3这种情况,第一轮后为1,2,4,5,此时list.get(index)==4,而4应该是下一轮的第一个,所以将index-1
}
return list.get(0);
}
}
