Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2025-09-10 21:53:54
1733. Minimum Number of People to Teach
思路 :
先把friendship里面可以沟通的组合删掉
算出剩下的人几个假设有m个
并统计剩下来的每个人会讲的语言
找出最多人会讲的语言 : L
假设剩下来的人中有x个人会讲L语言
那答案就是L-x
golang code :
func minimumTeachings(n int, languages [][]int, friendships [][]int) int {
m := len(languages)
know := make([]map[int]bool, m+1)
for i, val := range languages {
people := i + 1
know[people] = make(map[int]bool)
for _, language := range val {
know[people][language] = true
}
}
needTeach := make(map[int]bool)
for _, f := range friendships {
u, v := f[0], f[1]
teach := true
for language := range know[u] {
if know[v][language] {
teach = false
break
}
}
if teach {
needTeach[u] = true
needTeach[v] = true
}
}
NumNeedTeach := len(needTeach)
if NumNeedTeach == 0 {
return 0
}
arr := make(map[int]int)
for i, val := range languages {
people := i + 1
if needTeach[people] {
for _, language := range val {
arr[language]++
}
}
}
L := 0
for _, val := range arr {
L = max(val,L)
}
return NumNeedTeach-L
}
作者: NCKUEECS (小惠我婆)   2025-09-10 21:54:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com