【剑指offer】面试题62:圆圈中最后剩下的数字(Java)
0,1,,n-1這n個數字排成一個圓圈,從數字0開始,每次從這個圓圈里刪除第m個數字。求出這個圓圈里剩下的最后一個數字。
例如,0、1、2、3、4這5個數字組成一個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是2、0、4、1,因此最后剩下的數字是3。
?
示例 1:
輸入: n = 5, m = 3
輸出:?3
示例 2:
輸入: n = 10, m = 17
輸出:?2
代碼:
class?Solution?{
????public?int?lastRemaining(int?n,?int?m)?{
????????if(n==0||m==0)
????????{
????????????return?-1;
????????}
????????List<Integer>?list?=?new?ArrayList<>();
????????for(int?i=0;i<n;i++)
????????{
????????????list.add(i);
????????}
????????int?x?=?(m-1)%n;
????????while(list.size()!=1)
????????{
????????????list.remove(x);
????????????x?=?(x+m-1)%list.size();
????????}
????????return?list.get(0);
????}
}
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【剑指offer】面试题62:圆圈中最后剩下的数字(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--319. 灯泡开关
- 下一篇: 学习《图解HTTP》有感