import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param groups int整型一维数组
* @param n int整型
* @return int整型二维数组
*/
public int[][] findGatheringAreas (int[] groups, int n) {
int[][] res=new int[n][2];
int left=0,right=0;
boolean flag=true; //未确定左元素
int k=0;
if(groups[0]+1!=groups[1]){
res[k][0]=groups[0];
res[k++][1]=groups[0];
}
for(int i=1;i<n;i++){
if(i!=n-1&&groups[i]!=groups[i-1]+1&&groups[i]!=groups[i+1]-1){ //单独,左右都不连续
flag=true;
res[k][0]=groups[i];
res[k++][1]=groups[i];
}else if(groups[i]==groups[i-1]+1&&flag){ //连续,未确定左元素
left=groups[i-1];
flag=false;
}else if(i!=n-1&&groups[i]==groups[i-1]+1&&!flag&&groups[i]+1!=groups[i+1]){ //连续,已确定左元素
right=groups[i];
flag=true;
res[k][0]=left;
res[k++][1]=right;
System.out.println(left+" === "+right);
}else if(groups[i]!=groups[i-1]+1&&!flag){ //不连续,已确定左元素
right=groups[i-1];
flag=true;
res[k][0]=left;
res[k++][1]=right;
}else if(groups[i]!=groups[i-1]+1&&flag){ //不连续,未确定左元素
left=groups[i];
flag=false;
}
}
if(groups[n-1]!=groups[n-2]+1){
res[k][0]=groups[n-1];
res[k++][1]=groups[n-1];
}else {
right=groups[n-1];
res[k][0]=left;
res[k++][1]=right;
}
int[][] res2=new int[k][2];
for(int i=0;i<k;i++){
res2[i][0]=res[i][0];
res2[i][1]=res[i][1];
}
return res2;
}
}