题解 | #牧场奶牛集合区域#
牧场奶牛集合区域
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) { // write code here ArrayList<ArrayList<Integer> > alls = new ArrayList<>(); int tx = 0, ty = 0;//区间[tx, ty] for (int i = 0; i < groups.length; i++) { if (i == 0) {//第一个点就是一个区间 tx = groups[i]; ty = groups[i]; } else { if (groups[i] == ty + 1) {//当前点能和上一个区间合并 ty = ty + 1; } else {//不能合并 ArrayList<Integer> tmp = new ArrayList<>(); tmp.add(tx); tmp.add(ty); alls.add(tmp);//区间加进去 tx = groups[i];//新开一个区间 ty = groups[i]; } } } int tn = alls.size(); if (tn == 0 || alls.get(tn - 1).get(0) != tx) {//最后一个区间有没有加进去 ArrayList<Integer> tmp = new ArrayList<>(); tmp.add(tx); tmp.add(ty); alls.add(tmp); } int[] res[] = new int[alls.size()][2];//转为数组 for(int i = 0; i < alls.size(); i++){ res[i][0] = alls.get(i).get(0); res[i][1] = alls.get(i).get(1); } return res; } }