题解 | #合并区间#

合并区间

https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a

package main

//先做排序然后再一个个区间进行合并
import . "nc_tools"
import "sort"

/*
 * type Interval struct {
 *   Start int
 *   End int
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param intervals Interval类一维数组
 * @return Interval类一维数组
 */


type SortInterval []*Interval

func (s SortInterval) Len() int {
	return len(s)
}

func (s SortInterval) Less(i, j int) bool {
	if s[i].Start < s[j].Start {
		return true
	}
	if s[i].Start == s[j].Start {
		return s[i].End < s[j].End
	}
	return false
}

func (s SortInterval) Swap(i, j int) {
	s[i], s[j] = s[j], s[i]
}

func merge(intervals []*Interval) []*Interval {
	// write code here
    if len(intervals) == 0 {
		return intervals
	}
	//排序好
	sort.Sort(SortInterval(intervals))

	//合并区间
	res := make([]*Interval, 0)
	curIv := intervals[0]
	for i := 1; i < len(intervals); i++ {
		tmpIv := intervals[i]
		if tmpIv.Start > curIv.End {
			res = append(res, curIv)
			curIv = tmpIv
			continue
		}
		//可能存在交叉;进行合并
		tmpStart := curIv.Start
		if tmpIv.Start < tmpStart {
			tmpStart = tmpIv.Start
		}
		tmpEnd := curIv.End
		if tmpIv.End > tmpEnd {
			tmpEnd = tmpIv.End
		}
		curIv.Start = tmpStart
		curIv.End = tmpEnd
	}
    	res = append(res,curIv)
	return res
}

全部评论

相关推荐

头像
昨天 13:17
已编辑
苏州大学 Java
面试官真的很有耐心,人非常nice,但问得也是真的很细。面完半小后约HR面。有没有人说说HR面会问啥?【希望能过吧,以前真没想到面个试这么耗精力,这一周感觉都被掏空了】1.请做一下自我介绍。2.你掌握的数据结构有哪些?3.请讲一下一致性哈希的原理和解决的问题。4.请讲一下Ring&nbsp;buffer(环形缓冲区)的相关内容。5.请讲解一下HTTP状态码的相关分类和含义(如2xx、3xx、4xx、5xx)。6.请讲解一下四层网络负载均衡和七层网络负载均衡的区别,以及各自的应用场景。7.请讲一下反向代理的原理和常用工具,以及正向代理的相关内容。8.进程间通信的方式有哪些?哪种方式效率更高,为什么?9.请讲一下MySQL主从复制的实现原理(基于binlog、redolog相关)。10.多个从节点之间出现数据不一致的问题该如何解决?11.你了解的消息中间件有哪些?RabbitMQ、RocketMQ、Kafka这三种消息中间件的区别是什么?12.Redis中最常用的数据结构有哪些?13.请讲一下Redis中Zset(sorted&nbsp;set)的底层实现和优化策略。14.什么是小哈希和大哈希,二者在查找、插入性能上有什么区别?15.请讲一下TCC分布式事务算法的相关内容,以及它和2PC、3PC的区别。16.你在项目中使用的服务发现组件是什么,它的实现原理是什么?17.你在项目中使用的序列化协议是什么,为什么选择该协议?18.长连接的适用场景是什么?哪些场景不适合使用长连接,原因是什么?19.请设计一个评论系统(包括数据库表设计、数据结构、关联关系等)。20.【反问】想具体知道会做哪些模块的工作?有没有导师?
查看78道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务