leetcode_56

淳属虚构 · · 561 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Golang:

思路:试想,如果给我们的是按照intervals[i][0]大小顺序排列好的数组,那么我们在做数组合并的时候是否会简单一些呢?答案是肯定的,而且需要注意的是,题意中给的测试用例是按照我上文提及的顺序排列好的,但题目里并没有给出数组是排列好的这一句话。所以,要首先对数组做按照intervals[i][0]大小顺序排列的操作。然后,是如何对数组进行合并及存储呢?不难看出,我们只需要对intervals[i][1]intervals[i+1][0]进行比较,至于怎么个比较法,各位可以找张纸画一画即可,另外,代码里也有,这里就不给出详细说明了。

附上程序效果截图


效率一览
type ints [][]int

func (s ints) Len() int           { return len(s) }
func (s ints) Less(i, j int) bool { return s[i][0] < s[j][0] }
func (s ints) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }

func merge(intervals [][]int) [][]int {
    var res [][]int
    if len(intervals)==0 {
        return res
    }
    sort.Sort(ints(intervals))
    i:=0
    if i<len(intervals)-1{
        for{
            if i>=len(intervals)-1 {
                break
            }
            if intervals[i][1]<intervals[i+1][0] {
                res=append(res,intervals[i])
            }else if intervals[i][1]==intervals[i+1][0]{
                intervals[i+1][0]=intervals[i][0]
            }else{
                intervals[i+1][0]=intervals[i][0]
                if intervals[i+1][1]<intervals[i][1] {
                    intervals[i+1][1]=intervals[i][1]
                }
            }
            i++
        }
    }
    res=append(res,intervals[i])
    return res
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:淳属虚构

查看原文:leetcode_56

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

561 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传