寻找最大非空连续数组c++代码
时间: 2024-09-23 09:14:37 浏览: 10
在C++中,你可以使用滑动窗口的思想来找到一个整数数组中的最大非空连续子数组。这个算法维护两个指针,一个左指针(left)开始遍历,一个右指针(right)记录当前连续子数组的最大值所在的位置。以下是简单的C++代码实现:
```cpp
#include <vector>
#include <climits>
int maxNonEmptySubarray(std::vector<int>& nums) {
int left = 0, right = 0;
int current_sum = nums[0], max_sum = nums[0];
while (right < nums.size()) {
// 如果当前元素大于等于0,向右移动right指针并加到sum中
if (nums[right] >= 0)
current_sum += nums[right++];
else { // 否则,如果当前元素小于0,需要更新左边界的最小值,并从sum中减去它
current_sum -= nums[left]; // 释放负值的影响
left++; // 移动left指针到第一个非负元素
// 更新max_sum,如果当前的连续子数组和更大
if (current_sum > max_sum)
max_sum = current_sum;
}
}
return max_sum;
}