golang力扣leetcode 56.合并区间

简介: golang力扣leetcode 56.合并区间

56.合并区间

56.合并区间

题解

思路:

1.按照区间头排序
2.栈里放第一个区间
3.遍历,如果当前的头在栈顶区间内,说明可以合并,进行合并
4.如果不在区间内,直接入栈

代码

func merge(intervals [][]int) [][]int {
  sort.Slice(intervals, func(i, j int) bool {
    v1, v2 := intervals[i], intervals[j]
    return v1[0] < v2[0] || v1[0] == v2[0] && v1[1] < v2[1]
  })
  stack := [][]int{intervals[0]}
  for i := 1; i < len(intervals); i++ {
    cnt1 := stack[len(stack)-1]
    cnt2 := intervals[i]
    if cnt1[0] <= cnt2[0] && cnt1[1] >= cnt2[0] {
      cnt1[1] = max(cnt1[1], cnt2[1])
      stack[len(stack)-1] = cnt1
    } else {
      stack = append(stack, cnt2)
    }
  }
  return stack
}
func max(i, j int) int {
  if i > j {
    return i
  }
  return j
}
目录
相关文章
|
1月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
1月前
|
算法
Leetcode第57题(插入区间)
LeetCode第57题“插入区间”的解题方法,包括题目描述、示例、算法思路和代码实现,旨在解决将新区间插入有序且不重叠的区间列表中,并合并重叠区间的问题。
14 0
Leetcode第57题(插入区间)
|
1月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
77 0
|
1月前
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
28 0
|
1月前
|
存储
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
52 0
|
3月前
|
算法
LeetCode第57题插入区间
LeetCode第57题"插入区间"的解题方法,利用原区间集有序的特性,通过三步插入操作,有效实现了新区间的插入和重叠区间的合并。
LeetCode第57题插入区间
|
4月前
2670.找出不同元素数目差数组-力扣(LeetCode)
2670.找出不同元素数目差数组-力扣(LeetCode)
32 0
|
2月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
106 4
Golang语言之管道channel快速入门篇
|
2月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
64 4
Golang语言文件操作快速入门篇
|
2月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
99 3
Golang语言之gRPC程序设计示例