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;初始化的时候为什么会改变呢?????