最小和连续子数组(smallest sum contiguous subarray)代码异常求助
问题分析与解答
首先需要明确:你的代码逻辑是正确的,实际输出的{-5}才是输入数组{10, -5, 2, -1, 7, -3}的最小和连续子数组——因为它的和为-5,比你预期的{-5,2,-1}的和-4更小,完全符合“最小和”的定义。
验证过程
我们可以枚举输入数组的关键连续子数组及其和:
- 以
-5开头的子数组:[-5]:和为-5[-5,2]:和为-3[-5,2,-1]:和为-4- 后续扩展的子数组和会持续增大
- 其他子数组的和均大于
-5(比如[-1]和为-1、[-3]和为-3等)
显然-5是所有子数组和中的最小值,对应子数组{-5},你的代码输出完全正确。
若你期望其他结果
如果你确实想要得到{-5,2,-1},大概率是对需求的描述出现了偏差,比如:
- 是否混淆了“最小和”与“最大和”?但该子数组的和并非输入数组中的最大值
- 是否需要找长度最长的最小和子数组?但此场景下最小和仅对应唯一的短子数组
- 是否实际需求是找和最接近某个特定值的子数组?
可以补充明确需求后再调整代码逻辑。
内容的提问来源于stack exchange,提问作者Processing
相关产品推荐
相关产品推荐

