LCR 180. 文件组合
解题思路:
利用滑动窗口
class Solution {public int[][] fileCombination(int target) {int i = 1; // 滑动窗口的左边界int j = 1; // 滑动窗口的右边界int sum = 0; // 滑动窗口中数字的和List<int[]> res = new ArrayList<>();while (i <= target / 2) {if (sum < target) {// 右边界向右移动sum += j;j++;} else if (sum > target) {// 左边界向右移动sum -= i;i++;} else {// 记录结果int[] arr = new int[j-i];for (int k = i; k < j; k++) {arr[k-i] = k;}res.add(arr);// 左边界向右移动sum -= i;i++;}}return res.toArray(new int[res.size()][]);}
}