class SummaryRanges {
List<List<Integer>> list;
public SummaryRanges() {
list = new ArrayList<List<Integer>>();
}
public void addNum(int val) {
if(list.isEmpty()) {
List<Integer> tempList = new ArrayList<>();
tempList.add(val);
list.add(tempList);
}else {
int size = list.size();
List<Integer> lastList = list.get(size-1);
List<Integer> firstList = list.get(0);
Integer min = firstList.get(0);
Integer max = lastList.get(lastList.size()-1);
if(val < min) {
if(val+1 == min) {
firstList.add(0, val);
}else {
List<Integer> tempList = new ArrayList<>();
tempList.add(val);
list.add(0, tempList);
}
}else if(val > max){
if(val-1 == max) {
lastList.add(val);
}else {
List<Integer> tempList = new ArrayList<>();
tempList.add(val);
list.add(tempList);
}
}else {
for(int i = 0; i < list.size(); i++) {
List<Integer> tempList = list.get(i);
int start = tempList.get(0);
int end = tempList.get(tempList.size()-1);
if(val >= start && val <= end) {
break;
}
if(val > end) {
List<Integer> nextList = list.get(i+1);
Integer next = nextList.get(0);
if(val == end+1) {
if(val+1 == next) {
tempList.add(nextList.get(nextList.size()-1));
list.remove(i+1);
break;
}else {
tempList.add(val);
break;
}
}else {
if(val < next) {
if(val+1 == next) {
nextList.add(0, val);
break;
}else {
List<Integer> addList = new ArrayList<>();
addList.add(val);
list.add(i+1, addList);
break;
}
}
}
}else if(val < start) {
List<Integer> beforeList = list.get(i-1);
if(val == start-1) {
if(val-1 == beforeList.get(beforeList.size()-1)) {
tempList.add(beforeList.get(0));
list.remove(i-1);
break;
}else {
tempList.add(0, val);
break;
}
}
}
}
}
}
}
public int[][] getIntervals() {
int length = list.size();
int[][] resArr = new int[length][2];
for(int i = 0; i < list.size(); i++) {
resArr[i][0] = list.get(i).get(0);
List<Integer> temp = list.get(i);
resArr[i][1] = temp.get(temp.size()-1);
}
return resArr;
}
}
结果