LeetCode剑指offer57 II和为s的连续正数序列(用vector模拟滑动窗口)
Posted wx62cea850b9e28
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode剑指offer57 II和为s的连续正数序列(用vector模拟滑动窗口)相关的知识,希望对你有一定的参考价值。
一、题目
二、思路
因为找的是连续子序列(并且题目的原序列是从小到大元素排列)的和为target
,所以使用滑动窗口,如果加上当前元素后sum
满足条件则push_back
,如果加上当前元素后sum
过大了,则需要从该滑动窗口中,减去最前面的元素(最小元素),减着减着可能就找到新一种情况,如果减到sum
还比target
小了,那没必要继续减了,继续扩大滑动窗口的右侧边界。
三、代码
class Solution
public:
vector<vector<int>> findContinuousSequence(int target)
vector<vector<int>>ans;
vector<int>temp;
int sum = 0;
for(int i = 1; i <= target/2 + 1; i++)
sum += i;
temp.push_back(i);
if(sum == target)
ans.push_back(temp);
continue;
while(sum > target)
sum -= temp[0];
temp.erase(temp.begin());
//删除头元素
if(sum == target)
ans.push_back(temp);
continue;
return ans;
;
以上是关于LeetCode剑指offer57 II和为s的连续正数序列(用vector模拟滑动窗口)的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列