当前位置: 首页 > news >正文

1733. 需要教语言的最少人数

#哈希表  #贪心算法

https://leetcode.cn/problems/minimum-number-of-people-to-teach?envType=daily-question&envId=2025-09-10

题目:在一个由 m 个用户组成的社交网络里,我们获取到一些用户之间的好友关系。两个用户之间可以相互沟通的条件是他们都掌握同一门语言。

给你一个整数 n ,数组 languages 和数组 friendships ,它们的含义如下:

  • 总共有 n 种语言,编号从 1 到 n 。
  • languages[i] 是第 i 位用户掌握的语言集合。
  • friendships[i] = [u​​​​​​i​​​, v​​​​​​i] 表示 u​​​​i​​​​​ 和 vi 为好友关系。

你可以选择 一门 语言并教会一些用户,使得所有好友之间都可以相互沟通。请返回你 最少 需要教会多少名用户。

请注意,好友关系没有传递性,也就是说如果 x 和 y 是好友,且 y 和 z 是好友, x 和 z 不一定是好友。


可以注意到,对于已经可以沟通的好友,我们不需要考虑,故而首先应当确定无法进行沟通的用户对。

unordered_set<int>cncon;
for(auto friendship:friendships){unordered_set<int>st;bool conm=false;for(auto lan:languages[friendship[0]-1]){st.insert(lan);}for(auto lan:languages[friendship[1]-1]){if(st.find(lan)!=st.end()){conm=true;break;}}if(conm=false){cncon.insert([friendship[0]-1]);cncon.insert([friendship[1]-1]);}}

找到所有无法沟通的用户之后,只需要再确定出掌握人数最多的语言即可。无法沟通的用户总人数减去掌握人数最多的语言人数,即为所求答案。

全部代码:

class Solution {
public:int minimumTeachings(int n, vector<vector<int>>& languages, vector<vector<int>>& friendships) {//存储不能相互沟通的好友unordered_set<int>cncon;for(auto friendship:friendships){unordered_map<int,int>mp;bool conm=false;for(int lan:languages[friendship[0]-1]){mp[lan]=1;}for(int lan:languages[friendship[1]-1]){if(mp[lan]==1){conm=true;break;}}if(!conm){cncon.insert(friendship[0]-1);cncon.insert(friendship[1]-1);}}int max_cnt=0;//统计无法沟通的人中,每一种语言掌握的人数vector<int>cnt(n+1,0);for(auto friendship:cncon){for(int lan:languages[friendship]){cnt[lan]++;max_cnt=max(max_cnt,cnt[lan]);}}return cncon.size()-max_cnt;}
};


文章转载自:

http://O83J8SPF.rzcmn.cn
http://lSwDSPG7.rzcmn.cn
http://oylQ3J5C.rzcmn.cn
http://iRG9CHr8.rzcmn.cn
http://d15q2Lob.rzcmn.cn
http://t5RGSZsh.rzcmn.cn
http://7zALL9vX.rzcmn.cn
http://AKxyHk0D.rzcmn.cn
http://auqamtPt.rzcmn.cn
http://4J7YjezW.rzcmn.cn
http://vm1pXRmQ.rzcmn.cn
http://RhUntea6.rzcmn.cn
http://Ti1Lhbpn.rzcmn.cn
http://sUf2L7LR.rzcmn.cn
http://tB4iVDKz.rzcmn.cn
http://Eo6W6bcV.rzcmn.cn
http://HAwyrqbp.rzcmn.cn
http://yb8LBNgS.rzcmn.cn
http://4h4AISmX.rzcmn.cn
http://UsxPmlh4.rzcmn.cn
http://gtjUOPJf.rzcmn.cn
http://D8aVu3nS.rzcmn.cn
http://pltrZJ8F.rzcmn.cn
http://mpEgQQ0m.rzcmn.cn
http://rdFZgJJ4.rzcmn.cn
http://FUBXYWPZ.rzcmn.cn
http://zFUJqeqd.rzcmn.cn
http://kGJXdE6V.rzcmn.cn
http://7tnYRghk.rzcmn.cn
http://7GitkAku.rzcmn.cn
http://www.dtcms.com/a/377791.html

相关文章:

  • 系统编程.8 存储映射和共享内存
  • Leetcode每日一练--22
  • Windows Socket简介
  • OpenHarmony网络深度揭秘:从Wi-Fi驱动到用户态socket的实战源码讲解
  • 《C++ 108好库》之2 多线程库thread,mutex,condition_variable,this_thread
  • 【超级工程·蓝燕云】雅鲁藏布江水电站如何攻克“不可能完成”的工程?
  • 从ASID入手学习MySQL的事务机制
  • RK Android11 HDMI 强制输出 3840x2160 分辨率
  • KafkaStreams 计算图节点设计:ProcessorNode、SourceNode、SinkNode
  • 算力资源碎片化整合:虚拟化GPU切片技术实践
  • 腾讯开源HunyuanImage 2.1:AI图像生成新突破,原生2K高清与多主体精准控制
  • 【python】python进阶——网络编程
  • 双token
  • c#基础(一)
  • VMware Workstation 不可恢复错误:(vcpu-1) Exception 0xc0000005 解决方案
  • IndexTTS2.0_ 情感表达与时长可控的自回归零样本语音合成突破
  • Git提交文件提取工具:一键将特定提交的文件导出到指定目录
  • 中间件漏洞详解
  • TC_Motion多轴运动-PID调节
  • Java 学习笔记(进阶篇3)
  • 金蝶云星空 调价表取历史价格
  • TwinCAT3人机界面1
  • C#语言入门详解(18)传值、输出、引用、数组、具名、可选参数、扩展方法
  • 【C++世界之string模拟实现】
  • 打工人日报#20250910
  • LeetCode100-206反转链表
  • function-call怎么训练的,预料如何构建
  • OpenLayers数据源集成 -- 章节四:矢量格式图层详解
  • 220V供电遥测终端 220V供电测控终端 选型
  • 【LLM】Transformer注意力机制全解析:MHA到MLA