题解 | #牧场奶牛集合区域#
牧场奶牛集合区域
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;
}
}
查看29道真题和解析
