算法笔记:求最小子序列和
需求:
在给定的一个整数(有正有负)类型数组中, 求最小子序列和:
分析:
- 1.原序列中有正有负,则最小子序列和一定是负数
- 2.最小子序列的第一位与最后一位一定是负数
- 3.当一个子系列的和变成了正数时, 则当前序列的所有值都不属于最小子序列中的元素,那么就重新计算
- 运行时间分析:O(N)
/**
* @Author: xinruoxiangyang
* 运行时间分析:O(N)
* 输出结果: -7
*/
public class MinSubSequenceSum {
public static void main(String[] args) {
int[] ints = new int[]{-1, 2, -3, -4, 3, 2,-1, 0};
int min = getMinSubSequenceSum(ints);
System.out.println(min);
}
private static int getMinSubSequenceSum(int[] ints) {
int minSun = 0;
int currentSum = 0;
for (int i = 0; i < ints.length; i++) {
currentSum += ints[i];
if (currentSum < minSun) {
minSun = currentSum;
} else if (currentSum > 0) {
currentSum = 0;
}
}
return minSun;
}
}