Java 题解 | #奶牛喂养时间#

奶牛喂养时间

https://www.nowcoder.com/practice/db2c7c52df0449b49b36e7fe5364f521

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param intervals int整型二维数组
     * @return int整型二维数组
     */
    public int[][] mergeTimeIntervals (int[][] intervals) {
        // write code here
        if (intervals == null || intervals.length == 0) {
            return new int[][] {};
        }

        Arrays.sort(intervals, (a, b) -> a[0] - b[0]);

        List<int[]> merged = new ArrayList<>();
        for (int[] interval : intervals) {
            if (merged.isEmpty() || merged.get(merged.size() - 1)[1] < interval[0]) {
                merged.add(interval);
            } else {
                merged.get(merged.size() - 1)[1] = Math.max(merged.get(merged.size() - 1)[1],
                                                   interval[1]);
            }
        }

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

        return result;
    }
}

编程语言是Java。

该题考察的知识点是合并区间。

对区间按照起始时间进行升序排序,使用Arrays.sort方法。然后创建一个List<int[]> merged来存储合并后的区间。

遍历已排序的区间数组intervals,对每个区间进行合并判断。如果merged列表为空或者merged列表中最后一个区间的结束时间小于当前区间的起始时间,则直接将当前区间添加到merged列表中;否则更新merged列表中最后一个区间的结束时间为当前区间的结束时间和已有结束时间中的较大者。

merged列表转换为二维整数数组int[][] result,并作为结果返回。经过合并后的区间就存储在result数组中,并返回给调用者。

全部评论

相关推荐

服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务