public int[][] findContinuousSequence(int target) { // 滑动窗口 int i = 1; int j = 2; int sum = 3; List<int[]> res = new ArrayList<>(); // i,j相遇即为出口 while(i < j) { // 小于时 j往后走 并把j加上 if(sum < target) { j++; sum += j; } else { // 等于时 存入数组从i-j if(sum == target) { int[] ans = new int[j - i + 1]; for(int k = i; k <= j; k++) { ans[k - i] = k; } res.add(ans); } // 大于等于时 先把i减掉 i往后走 sum -= i; i++; } } return res.toArray(new int[0][]); }
剑指Offer-61和为s的连续正数序列
最新推荐文章于 2021-07-23 10:02:16 发布