题解 | #主持人调度(二)#

主持人调度(二)

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)
}

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务