一、题目描述
二、解题思路
约瑟夫环问题(好高级),其实找规律就可以了,以题目为例,我们观察最后剩下的数字3在每一轮所处的位置。
第一轮:0 1 2 3 4 0 1 2 3 4,删除2,此时3的下标为(0 + 3) % 5 = 3
第二轮:3 4 0 1 3 4 0 1,删除0,此时3的下标为(1 + 3) % 4 = 0
第三轮:1 3 4 1 3 4,删除4,此时3的下标为(1 + 3) % 3 = 1
第四轮:1 3 1 3,删除1,此时3的下标为(0 + 3) % 2 = 1
第五轮:3,此时3的下标为0
所以倒过来,最后剩下的数字的位置的公式就是pos=(pos+m)%n
,在代码中迭代即可。
三、代码实现
var lastRemaining = function (n, m) {
let f = 0
for(let i=2;i<=n;i++){
f = (m+f) % i
}
return f
};