无锡做网站公司有哪些,微商城开发发,wordpress怎么发到微信上,如何在app上做网站文章目录题目描述思路 代码二刷题目描述
花了不少时间来优化 #xff0c;很好的一道用来理解滑动窗口的题#xff5e;
思路 代码
要点#xff1a;为了 O(n) 复杂度#xff0c;左右边界都只能往右走滑动窗口#xff1a;存储当前连续正数序列
class Soluti…
文章目录题目描述思路 代码二刷题目描述
花了不少时间来优化 很好的一道用来理解滑动窗口的题
思路 代码
要点为了 O(n) 复杂度左右边界都只能往右走滑动窗口存储当前连续正数序列
class Solution {// 左边界、右边界都只能往右走 public int[][] findContinuousSequence(int target) {ArrayListint[] ans new ArrayList();int left 1, right 1;int sum 0;// 推论1满足题目要求的序列最大开头为 target / 2while(left target / 2){// 1. 增大窗口if(sum target){sum right;}// 2. 缩小窗口满足则加入然后找 left 1 开头的序列否则直接寻找。else {// 序列满足的情况加入答案if(sum target){int[] ansArray new int[right - left];for(int i 0; i ansArray.length; i){ansArray[i] left i;}ans.add(ansArray);}// 缩小sum - left;}}// 这行转化代码有必要记一下。。return ans.toArray(new int[ans.size()][]);}
}二刷
核心还是滑动窗口注意维护。数组的处理也要注意噢
class Solution {public int[][] findContinuousSequence(int target) {ArrayListint[] ans new ArrayList();int left 1, right 1;int sum 0;while(left target / 2) {if(sum target) {sum right;}else {if(sum target) {int[] arr new int[right - left];for(int i 0; i arr.length; i) {arr[i] left i;}ans.add(arr);}sum - left;}}return ans.toArray(new int[ans.size()][]);}
}