Re: [閒聊] 每日leetcode
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
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.121.235.241 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1757512437.A.DD1.html
→
09/10 21:54,
2月前
, 1F
09/10 21:54, 1F
討論串 (同標題文章)
完整討論串 (本文為第 1517 之 1548 篇):