problem:
Given an array of integers, find the subarray with smallest sum.
Return the sum of the subarray.
Note
The subarray should contain at least one integer.
Example
For [1, -1, -2, 1], return -3
解题思路:
将数组中的第一个数假设为最小子段和minSum,定义一个中间变量tempSum存储计算出的子段和,若tempSum的值小于或者等于零的话,就向后继续加;若大于零的话,则将当前的元素作为最小子段和赋值给tempSum。没做完一次最小子段和计算后,将tempSum和minSum进行比较,若tempSum小于minSum,则将tempSum中的值赋值给minSum,作为暂时的最小子段和,最后返回minSum。
代码如下:
class Solution {
public:
int minSubArray(vector nums) {
// write your code
int minSum = nums[0];
int tempSum=0;
for(int j=0; j
{
if(tempSum <= 0)
tempSum += nums[j];
else
tempSum = nums[j];
if(tempSum < minSum)
minSum = tempSum;
}
return minSum;
}
};
18/18 test cases passed
Total Runtime:33ms