题解 | #牧场奶牛集合区域#
牧场奶牛集合区域
https://www.nowcoder.com/practice/89218acf98234315af1cb3a223935318
知识点
数组,排序
解题思路
先将数组按照升序排序,用start和end来分别存储每次保存的开始位置和结束位置。
在循环中如果遇到当前数不等于上一个数加一的,表示需要存储start和end了;如果等于就更新end的位置。
在结束完循环需要注意要再保存一次start和end,因为循环到最后还没保存最后一次结果。
Java题解
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param groups int整型一维数组 * @param n int整型 * @return int整型二维数组 */ public int[][] findGatheringAreas (int[] groups, int n) { // write code here Arrays.sort(groups); List<int[]> list = new ArrayList<>(); int start = groups[0], end = groups[0]; for (int i = 1; i < groups.length; i++) { if(groups[i] != groups[i - 1] + 1){ list.add(new int[]{start,end}); start = groups[i]; } end = groups[i]; } list.add(new int[]{start,end}); return list.toArray(new int[list.size()][]); } }