public static ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum) {
        ArrayList<ArrayList<Integer>> doubleArray = new ArrayList<>();
        int left = 0;
        int right = 0;
        //根据奇数还是偶数的不同,选择的左指针起点不一样
        if(sum % 2 == 1){
            left = sum / 2 + 1;
        }else{
            left = sum / 2;
        }
        //右指针肯定是从倒数第二个开始的,终止条件为right>0
        right = left - 1;
        while(right > 0){//例子15
            //计算左指针到右指针的和,其实可以用公式的,没想到,(right + left)*(righr - left + 1)/2,连续数组的求和公式
            int sumStartNum = sumStartNum(left, right);
            if(sumStartNum == sum){
                doubleArray.add(singleArrayList(left, right));
                //8,7==>15,那么下一个肯定是7,6:循环一
                left--;
                right--;
            }
            else if(sumStartNum < sum){//由于7,6=13小于15,因此成7,6,5:543,5432,54321
                right--;
            }else if(sumStartNum > sum){//65,654,6543
                left--;
            }
        }
        return doubleArray;
    }
    public static ArrayList<Integer> singleArrayList(int left, int right){
        ArrayList<Integer> singleArray = new ArrayList<>();
        for (int i = right; i <= left; i++) {
            singleArray.add(i);
        }
        return singleArray;
    }
    public static int sumStartNum(int left, int right){
        int sum = 0;
        for (int i = right; i <= left; i++) {
            sum += i;
        }
        return sum;
    }

双指针滑窗法,居然自己想到了,哈哈。简单题飘了,不过之后50%的测试过关率,不晓得是那个边界条件出错了。