求教约瑟夫环java迭代器实现的思路,尤其是两个if的判断是怎么想的

sinat_28916691 sinat_28916691 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

public static void pass(int m, int n) {
int i, j, mPrime, numLeft;
ArrayList<Integer> L = new ArrayList<Integer>();
for (i = 1; i <= n; i++)
L.add(i);
ListIterator<Integer> iter = L.listIterator();
Integer item = 0;
numLeft = n;
mPrime = m % n;
for (i = 0; i < n; i++) {
mPrime = m % numLeft;
if (mPrime <= numLeft / 2) {
if (iter.hasNext())
item = iter.next();
for (j = 0; j < mPrime; j++) {
if (!iter.hasNext())
iter = L.listIterator();
item = iter.next();
}
} else {
for (j = 0; j < numLeft - mPrime; j++) {
if (!iter.hasPrevious())
iter = L.listIterator(L.size());
item = iter.previous();
}
}
System.out.print("Removed " + item + " ");
iter.remove();
if (!iter.hasNext())
iter = L.listIterator();
System.out.println();
for (Integer x : L)
System.out.print(x + " ");
System.out.println();
numLeft--;
}
System.out.println();
}
...全文

相关推荐

Java简单实现约瑟夫环算法示例

主要介绍了Java简单实现约瑟夫环算法,简单描述了约瑟夫环问题,并结合实例形式分析了Java实现约瑟夫环的具体操作技巧,需要的朋友可以参考下

weixin_38660051

华为OD机试 - 报数游戏 - 约瑟夫环(Java 2025 C卷 200分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

哪 吒

华为OD机试 - 报数游戏 - 约瑟夫环(Python/JS/C/C++ 2025 C卷 200分)

首先,我们将100个人的编号存储在一个映射表中,编号从1到100。然后,从1开始按顺时针方向报数,每次报数到M时,将对应的编号从映射表中移除。题目要求模拟100个人围成一圈报数的过程:从编号1到100,依次报数,每当报到给定数 M 时,该人出列,然后下一个人重新从1开始报数,直到剩余人数小于 M 为止。该算法使用模拟的方法解决约瑟夫环变形问题,按照题目要求进行报数和移除操作,直到剩余的人数小于M。他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。

哪 吒

java使用链表实现约瑟夫环

主要为大家详细介绍了java使用链表实现约瑟夫环,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

weixin_38514872

Java通过索引值实现约瑟夫环算法

主要介绍了Java通过索引值实现约瑟夫环,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38737366
评论 1
收藏 已收藏
分享
返回顶部
sinat_28916691
Java 51,407 成员 86,129 内容