剑指offer题解 孩子们的游戏(圆圈中最后剩下的数)

来源:互联网 发布:电影票用什么软件 编辑:程序博客网 时间:2024/05/16 06:55

约瑟夫环问题

第一种解法:(数学公式法)

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);    }}
0 0
原创粉丝点击