You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

给定整数m、n的数组循环删数问题:m=7、n=4返回值是否应为2?

约瑟夫环问题结果验证

结论:你提到的示例标注的返回值3是错误的,该场景下的正确返回值确实为2,示例给出的移除序列本身存在推导错误。

逐轮模拟验证

我们按照「每次从被移除元素的下一个位置开始数,数到第4个元素移除」的规则,逐轮推导:

  • 初始状态:数组为[1,2,3,4,5,6,7],起始计数位置为元素1
  • 第1轮:数到第4个元素为4,移除后剩余数组[1,2,3,5,6,7],下一轮起始计数位置为元素5
  • 第2轮:数到第4个元素为1,移除后剩余数组[2,3,5,6,7],下一轮起始计数位置为元素2
  • 第3轮:数到第4个元素为6,移除后剩余数组[2,3,5,7],下一轮起始计数位置为元素7
  • 第4轮:数到第4个元素为5,移除后剩余数组[2,3,7],下一轮起始计数位置为元素7
  • 第5轮:数到第4个元素为7,移除后剩余数组[2,3],下一轮起始计数位置为元素2
  • 第6轮:数到第4个元素为3,移除后仅剩元素2

可以看到示例给出的移除序列[4,1,6,5,2,7]在第五步就出现了错误,误将应该移除的7写为2,最终才得到了错误的返回值3。

公式验证

经典约瑟夫环递推公式为f(k) = (f(k-1) + n) % k,其中f(k)为k个元素时最终剩余元素的索引(从0开始计数):

  • 1个元素时:f(1) = 0
  • 2个元素时:f(2) = (0 +4) %2 = 0
  • 3个元素时:f(3) = (0 +4) %3 =1
  • 4个元素时:f(4) = (1 +4) %4 =1
  • 5个元素时:f(5) = (1 +4) %5 =0
  • 6个元素时:f(6) = (0 +4) %6 =4
  • 7个元素时:f(7) = (4 +4) %7 =1

初始数组索引1对应的元素为2,和模拟结果一致。

内容的提问来源于stack exchange,提问作者jonathan Laurent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:54:03