圆圈中最后剩下的数

发布于 2023-08-04 18:45:46 字数 701 浏览 40 评论 0

约瑟夫问题

进行数学公式的推导

public class Solution {
  public int LastRemaining_Solution(int n, int m) {
    if(n==0)
      return -1;
    if(n==1)
      return 0;
    return (LastRemaining_Solution(n-1,m) + m) % n;
  }
}

也可以进行游戏过程的模拟

import java.util.*;
public class Solution {
  public int LastRemaining_Solution(int n, int m) {
     if (m == 0 || n == 0) {
      return -1;
    }
    ArrayList<Integer> data = new ArrayList<Integer>();
    for (int i = 0; i < n; i++) {
      data.add(i);
    }
    int index = 0;
    while (data.size() > 1) {
      index = (index + m - 1) % data.size();
      data.remove(index);
    }
    return data.get(0);
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文