剑指offer57 和为某数的连续子数组 Java

public class SumOfSerialNumber57_ {
    public static void main(String[] args) {
        find(15);
    }
    private static void find(int sum) {
        if (sum <= 2)
            return;
        int mid = (sum + 1) / 2;
        int small = 1, big = 2;
        int cursum = small + big;
        while (small < mid) {
            if (cursum == sum)
                print(small, big);
            while (small < mid && cursum > sum) {
                cursum -= small;
                small++;
                if (cursum == sum)
                    print(small, big);
            }
            big++;
            cursum += big;
        }
    }

    static public void print(int start, int end) {
        for (int i = start; i <= end; i++) {
            System.out.print(i + " ");
        }
        System.out.println();
    }
}

解释:也是双指针思想

猜你喜欢

转载自blog.csdn.net/weixin_43065507/article/details/99336376