未排序正数数组中累加和为K的最长子数组长度
对于这种题型主要的步骤是:
1.先设定一个左指针指向当前滑动窗口的左边界,当条件不满足的时候,使用while循环直到跳出循环
2.判断跳出循环的部分是否满足题设条件,进行一些计算,比如计算满足条件的子数组数目是多少等等
int sumK_longest(vector<int> nums, int k)
{
int len = nums.size();
if (len == 0 || k == 0)
return 0;
int left = 0;
int sum = 0;
int maxlen = 0;
for (int i = 0; i < len; ++i)
{
sum = sum + nums[i];
while (sum > k)
{
sum = sum - nums[left];
++left;
}
if (sum == k)
{
maxlen = maxlen > i - left + 1 ? maxlen : i - left + 1;
}
}
return maxlen;
}