题解 | #牧场奶牛集合区域# java
牧场奶牛集合区域
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 List<int[]> res = new ArrayList<>(); int last = groups[0]; for (int i = 1; i < n; i++) { if (groups[i] - groups[i - 1] == 1) continue; res.add(new int[] {last, groups[i - 1]}); last = groups[i]; } res.add(new int[] {last, groups[n - 1]}); int[][] resultArray = new int[res.size()][2]; for (int i = 0; i < res.size(); i++) { resultArray[i] = res.get(i); } return resultArray; } }
编程语言是Java。
该题考察的知识点主要涉及数组遍历、条件判断和二维数组操作。
代码实现了一个findGatheringAreas
,接受一个整数数组groups
和一个整数n
作为参数。方法的目标是找到一些集会区域,并将它们以二维整数数组的形式返回。
代码逻辑如下:
- 初始化一个变量
last
,用于记录当前连续区域的起始位置。 - 遍历整数数组
groups
,从第二个元素开始,比较当前元素与前一个元素的差值是否为1,如果是1,则表示当前元素与前一个元素属于同一个连续区域,跳过当前元素。 - 如果当前元素与前一个元素的差值不是1,则表示当前元素是一个新的连续区域的起始位置,将起始位置和前一个元素作为一组数据添加到结果二维数组
res
中。 - 更新
last
为当前元素,继续遍历。 - 最后将最后一个连续区域的起始位置和数组末尾元素作为一组数据添加到结果数组
res
中。 - 返回结果二维数组
res
。