题解 | #二维数组中的查找#
环形链表的约瑟夫问题
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); } }