剑指 Offer 57 - II. 和为s的连续正数序列
依然是利用滑动窗口解决。
贴一个List的 toArray()方法 和 toArray(T[] a)方法的分析。
https://blog.csdn.net/mucaoyx/article/details/86005283
剑指 Offer 57 - II. 和为s的连续正数序列
class Solution { public int[][] findContinuousSequence(int target) { //滑动窗口边界,sum为窗口内数字的和 int i = 1, j = 2, sum = 3; //使用list存储1维数组,方便返回 List<int[]> res = new ArrayList<>(); while(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); //sum -= i; //i++; } //和比目标小,j右移后,sum加上j if(sum < target){ j++; sum += j; } //和比目标大,sum减去当前i,然后i右移 //因为少了1个数,所以sum总体是减小的 else{ sum -= i; i++; } } //利用toArray(T[] a)方法返回 return res.toArray(new int[0][]); } }