题解 | #牧场奶牛集合区域#

牧场奶牛集合区域

https://www.nowcoder.com/practice/89218acf98234315af1cb3a223935318?tpId=354&tqId=10589478&ru=/exam/oj&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D354

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[]> result = new ArrayList<>();
        int start = 0;
        int end = 0;

        for (int i = 0; i < groups.length; i++) {
            if (i > 0 && groups[i] - groups[i - 1] != 1) {
                // Found a gap, record the current range
                result.add(new int[] {groups[start], groups[end]});
                // Update the start pointer for the next range
                start = i;
            }
            // Update the end pointer for the current range
            end = i;
        }

        // Add the last range
        result.add(new int[] {groups[start], groups[end]});

          int[][] resultArray = new int[result.size()][];
        for (int i = 0; i < result.size(); i++) {
            resultArray[i] = result.get(i);
        }

        return resultArray;
    }
}

考察的知识点:

  1. 数组遍历:通过遍历数组来查找连续的区间。
  2. 指针操作:维护起始位置和结束位置的指针来记录区间。
  3. 列表操作:使用列表来记录找到的连续整数区间范围。

解题思路分析:

这个问题要求找出覆盖给定有序整数数组中所有编号的最小连续整数区间范围列表。我们需要从数组中找出连续的区间,使得这些区间中包含数组中的所有编号,并且不能包括数组中没有的元素。

一种方法是遍历数组,同时维护两个指针,一个指针指向当前区间的起始位置,另一个指针往后遍历找到区间的结束位置。当我们找到一个连续的区间,它包含了数组中的所有编号时,我们记录这个区间,然后更新起始位置的指针为当前位置的下一个位置。

全部评论

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务