用数组代替循环链表
0 1 2 3 4 m=3 res = 3
依次删除 2 0 4 1 ,最后为3
精髓
1 m-1若m为3 则删除的第3个数字 ,为当前位置+2,当前位置start是第一个数字。
2 start = (start+(m-1))%arr.length
function foo(n,m) {
let arr = [];
for (let i=0;i<n;i++){
arr.push(i);
}
let start = 0;
while (arr.length>1) {
if ( start + m-1 <arr.length) {
start = start + m-1
arr.splice(start,1)
}
else {
start = (start+(m-1))%arr.length
arr.splice(start,1)
}
}
return arr[0]
}
console.log(foo(5, 3));