leetCode之贪心算法

第一题

  • 难度:中等
  • 题目:435. 无重叠区间
    给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。
    注意:
    可以认为区间的终点总是大于它的起点。
    区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。

示例

输入: [ [1,2], [2,3], [3,4], [1,3] ]

输出: 1

解释: 移除 [1,3] 后,剩下的区间没有重叠。

输入: [ [1,2], [1,2], [1,2] ]

输出: 2

解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。

输入: [ [1,2], [2,3] ]

输出: 0

解释: 你不需要移除任何区间,因为它们已经是无重叠的了。

解题思路

  • 这道题使用贪心算法,先把数组按最后的数排序,然后依次比较最后的数是否都大于flag否则就是重复元素

我的答案

var eraseOverlapIntervals = function (intervals) {
    if (!intervals.length) return 0
    intervals.sort((a, b) => { return a[1] - b[1] })
    let flag = intervals[0][1];
    let count = 0
    for (let i = 1; i <= intervals.length - 1; i++) {
        if (flag > intervals[i][0]) {
            count += 1
        } else {
            flag = intervals[i][1]
        }
    }
    return count
};
image.png

你可能感兴趣的:(leetCode之贪心算法)