剑指 Offer 57 - II. 和为s的连续正数序列

package leetcode;

import java.util.ArrayList;
import java.util.List;

public class offer_57_2 {
    public int[][] findContinuousSequence(int target) {
        int left=1;
        int right=1;
        target=target*2;
        int sum;
        int num;
        //滑动窗口
        List<int[]> array=new ArrayList<int[]>();
        while(left<=right&&right<target/2) {
            sum=left+right;
            num=right-left+1;
            if(sum*num==target) {
                int[] li=new int[right-left+1];
                int index=0;
                for(int i=left;i<=right;i++) {
                    li[index]=i;
                    index++;
                }
                array.add(li);
                right=right+1;
                continue;
            }
            //小于target滑动右边界
            if(sum*num<target) {
                right=right+1;
                continue;
            }
            //大于target滑动左边界
            if(sum*num>target) {
                left=left+1;
                continue;
            }
        }
        if(target%2!=0) {
            int li[]= {target/2,target/2+1};
            array.add(li);
        }
        int[][] list=new int[array.size()][target/2];
        for(int i=0;i<array.size();i++) {
            list[i]=array.get(i);
        }
        return list;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        offer_57_2 off=new offer_57_2();
        off.findContinuousSequence(15);
    }

}

 

posted on 2022-03-29 20:03  一仟零一夜丶  阅读(16)  评论(0)    收藏  举报