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

Java数组求最值、出现次数及极值位置代码逻辑错误疑问

错误原因

你最初代码的问题核心是:当找到比当前记录值更大的新最大值时,没有清空之前旧最大值的累计计数,而是直接在原有计数基础上累加,导致最终最大值统计次数远大于实际值。

我们用实际运行场景举例就很容易理解:
假设生成的数组为 [2, 5, 5, 7, 7, 7]

  1. 初始状态:Max = Integer.MIN_VALUE,Max_Count = 0
  2. 遍历到第一个元素2:2大于初始的Integer.MIN_VALUE,触发if分支,Max_Count += 1 → 计数变为1,Max更新为2
  3. 遍历到第二个元素5:5大于当前Max=2,触发if分支,Max_Count += 1 → 计数变为2,Max更新为5
    • 这一步已经出现错误:5是新的最大值,当前是第一次出现,正确计数应该是1,而不是在旧最大值2的计数基础上加1得到2
  4. 遍历到第三个元素5:等于当前Max,触发else if分支,Max_Count += 1 → 计数变为3
    • 此时5实际只出现了2次,但计数已经统计为3
  5. 遍历到第四个元素7:7大于当前Max=5,触发if分支,Max_Count += 1 → 计数变为4,Max更新为7
    • 7实际是第一次出现,正确计数应该是1,这里直接累加后变成4,偏差会随着最大值更新次数越来越大

你修改后的Max_Count = 1逻辑是完全正确的:当找到更大的新最大值时,之前的所有旧最大值的统计全部作废,直接将新最大值的计数重置为1(当前遍历到的这个元素就是新最大值的第一次出现),后续遇到和当前Max相等的元素再累加计数,结果自然符合预期。

最小值统计的逻辑问题完全同理:每次找到更小的新最小值时,需要重置Min_Count = 1,而不是在旧最小值的计数基础上累加,否则会出现完全一致的计数错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:24:03