编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数,报到 m 的人离开。
下一个人继续从 1 开始报数。
n-1 轮结束以后,只剩下一个人,问最后留下的这个人编号是多少?
数据范围:
进阶:空间复杂度
,时间复杂度
5,2
3
开始5个人 1,2,3,4,5 ,从1开始报数,1->1,2->2编号为2的人离开 1,3,4,5,从3开始报数,3->1,4->2编号为4的人离开 1,3,5,从5开始报数,5->1,1->2编号为1的人离开 3,5,从3开始报数,3->1,5->2编号为5的人离开 最后留下人的编号是3
1,1
1
function ysf( n , m ) { // write code here let user = []; for(let i = 1; i <= n; i ++) { user.push(i) } while(user.length > 1) { let index = m % user.length; if (index == 0) { user.pop(); } else { user = user.slice(index, user.length).concat(user.slice(0, index - 1)); } } return user[0]; }