给定一个数字数组,找到最小总和,并且子数组的长度不能为0.
我知道我可以使用kadane的算法,但问题是要求子阵列的长度不应为0.因此,我的实现无法处理数组中所有元素都是正数的情况。
例如,给定以下数组: 2,5,3,8,4,最小总和为2.
它还必须适用于普通数组,如: -5,-4,5,-1,2,最小和为-9(前两个元素的总和)
我如何实现这一目标?
这是我的实施:
while (N--) {
scanf("%i", &num);
localmx += num;
if (localmx > 0) localmx = 0;
if (localmx < mx) mx = localmx;
}
答案 0 :(得分:2)
只需使用kadena的算法,如果答案是空的子阵列,则在阵列中找到最少的元素。