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

/**
 * @Auther: liuhaidong
 * Data: 2019/11/11 0011、10:14
 * Description:
 * @version: 1.0
 */
public class consecutiveNumbersSum {
    public static void main(String[] args) {
        System.out.println(consecutiveNumbersSum(9));
    }
    static int a =0;
    //static List<List<Integer>> returnList;
    public static int consecutiveNumbersSum(int N) {
        if(N < 2){
            return N;
        }
       // returnList = new ArrayList<>(new ArrayList<>());
        int[] nus = new int[N];
        for (int i = 0; i < N ; i++) {
            nus[i] = i+1;
        }
        int start = 0;
        //记录开始数字
        int end = 1;
        //记录结束数字
        long sum = nus[start]+nus[end];
        while (start <= end){
            if(sum < N){
                ++ end;
                if(end >= N){
                    break;
                }
                sum += nus[end];
            }else if(sum > N){
                sum -= nus[start];
               ++ start;

            }else {
                ++a;
//                List<Integer> lists= new ArrayList<>();
//                for (int i = start; i <= end ; i++) {
//                    lists.add(nus[i]);
//                }
//                returnList.add(lists);
                ++end;
                if(end >= N){
                    break;
                }
                sum += nus[end];
            }
        }
//        List<Integer> lists= new ArrayList<>();
//        help(nus,start,end,lists,N);

       //return returnList.size();
        return a;
    }

//    private static void help(int[] nus, int start, int end,List<Integer> lists,int target) {
//        if((nus[start] + nus[end])== target){
//            returnList.add(lists);
//        }
//        while (start < end){
//            if((nus[start] + nus[end]) < target){
//                ++ end;
//            }else {
//
//            }
//        }
//    }
}

 不知道static int a =0;以及static List<List<Integer>> returnList;初始化的时候为什么会改变呢?????