一、题目描述
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
二、实例
三、解题思路
我们可以使用滑动窗口的思路来解决,整体来用for循环整体的次数,用whie(sum>target)来控制窗口的大小
四、代码
/**
* @param {number} target
* @return {number[][]}
*/
var findContinuousSequence = function (target) {
let index = target % 2 === 0 ? target / 2 : (target / 2 | 0) + 1
let res = []
let temp = []
let sum = 0
for (let i = 1; i <= index; i++) {
temp.push(i)
sum = sum + i
while (sum > target) {
sum -= temp[0]
temp.shift()
}
if (sum === target) {
temp.length >= 2 && res.push([...temp])
}
}
return res;
};