题解 | #牧场奶牛集合区域#
牧场奶牛集合区域
https://www.nowcoder.com/practice/89218acf98234315af1cb3a223935318
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; } }