zoukankan      html  css  js  c++  java
  • LeetCode 56 aka 每日一题

    https://leetcode-cn.com/problems/merge-intervals/

    这个合并区间的题比较简单,使用到了Arrays工具包中的sort方法,这次来巩固一下。

    对于二维数组的排序,我们可以这么写 

            Arrays.sort(intervals, new Comparator<int[]>() {
                @Override
                public int compare(int[] o1, int[] o2) {
                    return o1[0]-o2[0];
                }
            });

    我们重写了他的比较方法,其中o1-o2是返回升序排列,如果o2-o1的话就是降序排列。

    我们将它开始的区间进行排序,以比较前一个区间的结束和当前区间的开始的大小关系。

    如果当前区间的start比上一个区间的end小,说明这两个区间可以合成一个,并且把较大的结束位设置为新结束位。

    如果比上一个区间的end大,说明这两个区间不存在连续关系。我们将上一个区间的start和end新建一个数组放入list中,然后令新的开始和结束分别为当前的值。

    代码如下

    class Solution {
        public int[][] merge(int[][] intervals) {
            if(intervals == null || intervals.length<1){
                return intervals;
            }
            Arrays.sort(intervals, new Comparator<int[]>() {
                @Override
                public int compare(int[] o1, int[] o2) {
                    return o1[0]-o2[0];
                }
            });
            ArrayList<int[]> list = new ArrayList<>();
            int end = intervals[0][1];
            int start = intervals[0][0];
            for(int i =1;i<intervals.length;i++){
                if (intervals[i][0] > end) {
                    list.add(new int[]{start, end});
                    start = intervals[i][0];
                }
                if(end < intervals[i][1]){
                    end = intervals[i][1];
                }
                
            }
            list.add(new int[]{start,end});
            int[][] result = new int[list.size()][2];
            for(int i = 0 ;i < list.size();i++){
                result[i][0] = list.get(i)[0];
                result[i][1] = list.get(i)[1];
            }
            return result;
        }
    }
    View Code
  • 相关阅读:
    Python-05知识-01Python优缺点
    Python-02进阶-06代码优化工具
    Python-02进阶-04多进程多线程
    Python-02进阶-03生成器
    Python-02进阶-02装饰器
    Python-01基础-13功能模块
    Python-01基础-12常用命令
    Python-01基础-11基础知识
    console.dir有很多浏览器,系统的兼容性问题,不要随便用!
    微信支付-签名错误
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/12714126.html
Copyright © 2011-2022 走看看