zoukankan      html  css  js  c++  java
  • 56. Merge Intervals

    一、题目

      1、审题

      

      2、分析

        给出一个装有间隔数字的数组组成的 List(List中数组是无序的),将有重叠部分的数组进行合并。

    二、解答

      1、思路:

        先将 List 中数组根据 start 进行排序,再依次判断是否有重叠(比较前一个的 end 与后一个的 start),再进行合并。

    /**
     * Definition for an interval.
     * public class Interval {
     *     int start;
     *     int end;
     *     Interval() { start = 0; end = 0; }
     *     Interval(int s, int e) { start = s; end = e; }
     * }
     */
    class Solution {
        public List<Interval> merge(List<Interval> intervals) {
            if(intervals.size() <= 1)
                return intervals;
            
            // 将 intervals 根据 start 排序
            Collections.sort(intervals, new Comparator<Interval>() {
                @Override
                public int compare(Interval o1, Interval o2) {
                    return o1.start - o2.start;
                }
            });
            
            List<Interval> resultList = new LinkedList<>();
            int start = intervals.get(0).start;
            int end = intervals.get(0).end;
            
            for(Interval interval: intervals) {
                if(interval.start <= end) // 有重叠
                    end = Math.max(end, interval.end);
                else {                    // 无重叠
                    resultList.add(new Interval(start, end));
                    start = interval.start;
                    end = interval.end;
                }
            }
            resultList.add(new Interval(start, end));
            return resultList;
        }
    }
  • 相关阅读:
    xmind等工具下载
    remix使用经验积累
    visual studio code下载地址
    以太坊存储类型(memory,storage)及变量存储详解
    remix共享本地文件夹教程
    在remix恢复已部署的合约步骤
    ERC721 相关语法和知识点学习
    用truffle写测试用例
    truffle环境搭建和应用
    jenkins pipeline基础语法与示例
  • 原文地址:https://www.cnblogs.com/skillking/p/9655356.html
Copyright © 2011-2022 走看看