前言
掘金团队号上线,助你 Offer 临门! 点击 查看详情
题目描述
解题思路
- 使用left和right两个变量来代替滑动窗口的左边界和右边界。
- 核心while循环的条件是:只要左边界 小于 目标值的一半就要进入循环,只要不小于循环结束,说明此时已经找到完了。
- 定义temp变量,用来存放滑动窗口中的所有元素的和。
- 当temp小于target的值的时候,右边界向右扩一个。
- 当temp大于target的时候,左边向右一个
实现代码
var findContinuousSequence = function(target) { let left = 1; let right = 1; let arr = []; let temp = 0; // 下面的这个result数组是用来返回的 let result = []; // 核心判断条件是当 left >= target/2 的时候 left + tight >= target while (left < (target/2)) { while (temp < target) { temp = temp + right; arr.push(right); right += 1; } while (temp > target) { temp = temp - left; arr.shift(); left += 1; } if (target === temp) { temp = temp - left; left++; result.push([...arr]); arr.shift(); } } return result; }; 作者:Always_positive 链接:https://juejin.cn/post/6948663974632095758 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。