约瑟夫环问题
第一种解法:(数学公式法)
public class Solution {
public int LastRemaining_Solution(int n, int m) {
if(n<1||m<1) return -1;
int last=0;
for(int i=2;i<=n;i++){
last=(last+m)%i;
}
return last;
}
}
第一种解法:(环形链表法)
import java.util.*;
public class Solution {
public int LastRemaining_Solution(int n, int m) {
if(n<1||m<1) return -1;
LinkedList<Integer> list=new LinkedList<Integer>();
for(int i=0;i<n;i++){
list.add(i);
}
int size=list.size();
int index=0;
while(size>1){
list.remove((index+m-1)%size);
index=(index+m-1)%size;
size--;
}
return list.get(0);
}
}
本文介绍了约瑟夫环问题的两种解决方案:一种是通过数学公式实现,另一种则是利用环形链表的方法来解决。数学公式法简洁高效,而环形链表法则更直观地展示了问题的解决过程。

被折叠的 条评论
为什么被折叠?



