题解 | #主持人调度(二)#
主持人调度(二)
https://www.nowcoder.com/practice/4edf6e6d01554870a12f218c94e8a299
package main
import "sort"
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 计算成功举办活动需要多少名主持人
* @param n int整型 有n个活动
* @param startEnd int整型二维数组 startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间
* @return int整型
*/
type sortArr [][]int
func (s sortArr) Len() int {
return len(s)
}
func (s sortArr) Less(i, j int) bool {
if s[i][0] != s[j][0] {
return s[i][0] < s[j][0]
}
return s[i][1] < s[j][1]
}
func (s sortArr) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func minmumNumberOfHost(n int, startEnd [][]int) int {
if len(startEnd) == 0 {
return 0
}
// write code here
sort.Sort(sortArr(startEnd))
//记录安排
arrangement := make([]int, 0)
//任务找人
for i := 0; i < len(startEnd); i++ {
found := false
for j, tmp := range arrangement {
//完全不交叉,可以复用
if startEnd[i][0] >= tmp {
arrangement[j] = startEnd[i][1]
found = true
break
}
}
//现存安排方式没有空余安排;增加新人
if !found {
arrangement = append(arrangement, startEnd[i][1])
}
}
return len(arrangement)
}
查看19道真题和解析