题解 | #主持人调度(二)#
主持人调度(二)
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) }