LeetCode 851. 喧闹和富有(拓扑排序)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

在一组 N 个人(编号为 0, 1, 2, ..., N-1)中,每个人都有不同数目的钱,以及不同程度的安静(quietness)。

为了方便起见,我们将编号为 x 的人简称为 "person x "

如果能够肯定 person x 比 person y 更有钱的话,我们会说 richer[i] = [x, y]
注意 richer 可能只是有效观察的一个子集。

另外,如果 person x 的安静程度为 q ,我们会说 quiet[x] = q

现在,返回答案 answer ,其中 answer[x] = y 的前提是,在所有拥有的钱不少于 person x 的人中,person y 是最安静的人(也就是安静值 quiet[y] 最小的人)。

示例:
输入:richer = [[1,0],[2,1],[3,1],[3,7],[4,3],[5,3],[6,3]], quiet = [3,2,5,4,6,1,7,0]
输出:[5,5,2,5,4,5,6,7]
解释: 
answer[0] = 5,
person 5 比 person 3 有更多的钱,
person 3 比 person 1 有更多的钱,
person 1 比 person 0 有更多的钱。
唯一较为安静(有较低的安静值 quiet[x])的人是 person 7,
但是目前还不清楚他是否比 person 0 更有钱。answer[7] = 7,
在所有拥有的钱肯定不少于 person 7 的人中
(这可能包括 person 3456 以及 7),
最安静(有较低安静值 quiet[x])的人是 person 7。其他的答案也可以用类似的推理来解释。提示:
1 <= quiet.length = N <= 500
0 <= quiet[i] < N,所有 quiet[i] 都不相同。
0 <= richer.length <= N * (N-1) / 2
0 <= richer[i][j] < N
richer[i][0] != richer[i][1]
richer[i] 都是不同的。
对 richer 的观察在逻辑上是一致的。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/loud-and-rich
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

参考:图Graph–拓扑排序(Topological Sorting)

class Solution {
public:vector<int> loudAndRich(vector<vector<int>>& richer, vector<int>& quiet) {int n = quiet.size();vector<vector<int>> g(n);//有向图,富的指向穷的vector<int> indegree(n, 0);//入度for(auto& r : richer){g[r[0]].push_back(r[1]);indegree[r[1]]++;}queue<int> q;//点的idvector<int> ans(n, -1);for(int i = 0; i< n; i++)ans[i] = i;//初始化最安静的是自己for(int i = 0; i < n; i++){if(indegree[i] == 0){q.push(i);//最富裕的人,入度为0}}while(!q.empty()){int id = q.front();//人的idint q_val = quiet[ans[id]];//到他这为止,最安静的人的安静值q.pop();for(auto nt : g[id])//跟他连接的人(比他穷){if(q_val < quiet[ans[nt]])//比 nt 更安静的人是 ans[nt], 其安静值没有q_val小ans[nt] = ans[id];if(--indegree[nt] == 0)q.push(nt);}}return ans;}
};

192 ms 33.1 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jquery练习题—实现分组添加功能

实现分组添加功能&#xff1a; <title>Insert title here</title> <script type"text/javascript" src"js/jquery-1.12.4.min.js"></script> <script type"text/javascript"> $(function(){ //需求1&#xff1a;…

PostgreSQL参数学习:vacuum_defer_clean_age

官方文档&#xff1a; http://www.postgresql.org/docs/9.3/static/runtime-config-replication.html 为了防止slave端读取数据时&#xff0c;因为读到的是旧有数据而被强制取消&#xff0c;设定了这么一个以transaction为单位的值。 就是可以保证经过这么多的trsanction后&…

java的常用引用类、数组、String类

java的常用引用类、数组、String类 1. 常用引用类 1.1 Scanner 一个简单的文本扫描器类。 使用&#xff1a; //创建扫描器对象 Scanner sc new Scanner(System.in); //接收用户输入字符串类型的数据 String str sc.next(); //接收用户输入整数类型的数据 …

json-ajax-jsonp-cookie

json json是 JavaScript Object Notation的首字母缩写&#xff0c;单词的意思是javascript对象表示法&#xff0c;这里说的json指的是类似于javascript对象的一种数据格式&#xff0c;目前这种数据格式比较流行&#xff0c;逐渐替换掉了传统的xml数据格式。 json是轻量级,易解…

LeetCode 981. 基于时间的键值存储(哈希+二分查找)

文章目录1. 题目2. 解题1. 题目 创建一个基于时间的键值存储类 TimeMap&#xff0c;它支持下面两个操作&#xff1a; set(string key, string value, int timestamp) 存储键 key、值 value&#xff0c;以及给定的时间戳 timestamp。 get(string key, int timestamp) 返回先…

java的类与对象

java的类与对象 1 面向对象 1.1 面向对象与面向过程的区别 面向过程和面向对象都是解决问题的逻辑方法&#xff0c;面向过程是强调解决问题的步骤&#xff0c;可以先定义多个函数&#xff0c;在使用的使用调用函数即可&#xff1b;面向对象把问题分解成多个对象&#xff0c;…

学车总结

学车总结&#xff1a; 1、左脚离合&#xff0c;右脚油门和刹车。2、左脚脚跟着地&#xff0c;用脚尖控制离合。3、踩离合要快&#xff0c;松要慢点&#xff1b;刹车刚好相反。4、平时不要猛打方向盘&#xff0c;轻微调整就行&#xff0c;需要拐急弯要降低车速。5、换挡时需要将…

建设网站需要的Bootstrap介绍与操作

01-流体布局 流体布局,就是使用百分比来设置元素的宽度,元素的高度值固定, calc()&#xff1a;可以通过计算的方式给元素添加尺寸,比如:width:calc(25%-4px); box-sizing&#xff1a;content-box默认的盒子计算方式 2.border-box 盒子的计算方式从边框开始,盒子的尺寸,边框和…

04.卷积神经网络 W4.特殊应用:人脸识别和神经风格转换

文章目录1. 什么是人脸识别2. One-Shot学习3. Siamese 网络4. Triplet 损失5. 人脸验证与二分类6. 什么是神经风格迁移7. 深度卷积网络在学什么8. Cost function9. Content cost function10. Style cost function11. 一维到三维推广作业参考&#xff1a;吴恩达视频课深度学习笔…

java的封装,继承,多态

java的封装&#xff0c;继承&#xff0c;多态 1 封装 1.1 封装 指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障&#xff0c;防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据&#xff0c;必须通过严格的…

详解一个自己原创的正则匹配IP的表达式

第一种方法&#xff08;可以匹配有点毛病&#xff09;&#xff1a;检测IP地址的正则表达式 正则表达式&#xff1a; ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) 红色块代…

亚洲赛前训练计划

回顾和加深所学算法。 主要回顾用途及使用方法。 图论方面&#xff1a; 1.dfs,bfs 2.强连通&#xff0c;点双连通&#xff0c;边双连通&#xff0c;2-sat 3.匈牙利算法km,以及不等式解 4.网络流&#xff0c;费用流 5.最短路&#xff0c;SPFA&#xff0c;dijstra, floay,斯坦纳树…

天池在线编程 2020年9月26日 日常周赛题解

文章目录1. K步编辑2. 折纸3. 字符串的不同排列4. 硬币排成线题目地址&#xff0c;请点这 1. K步编辑 给出一个只含有小写字母的字符串的集合以及一个目标串(target)&#xff0c;输出所有可以经过不多于 k 次操作得到目标字符串的字符串。 你可以对字符串进行一下的3种操作:…

JavaScript试题练习题

1. 我们可以在下列哪个HTML元素中放置javascript代码&#xff1f; A.< script > B.<javascript > C.< js > D.<scripting > ★标准答案&#xff1a;A 2. 预测以下代码片段的输出结果: var str alert(typeof str); A.. string B..un…

Java的static,final,代码块,内部类,抽象类,接口等

Java的static&#xff0c;final&#xff0c;代码块&#xff0c;内部类&#xff0c;抽象类&#xff0c;接口等 1 static关键字月final关键字 1.1 static static表示静态。可以修饰属性&#xff0c;方法&#xff0c;代码块内部类等&#xff0c;总结如下&#xff1a; 特点修饰属…

使用parted划分GPT分区(转)

parted命令可以划分单个分区大于2T的GPT格式的分区&#xff0c;也可以划分普通的MBR分区&#xff0c;fdisk命令对于大于2T的分区无法划分&#xff0c;所以用fdisk无法看到parted划分的GPT格式的分区。 Parted 命令分为两种模式&#xff1a;命令行模式和交互模式。 1、命令行模式…

04.卷积神经网络 W4.特殊应用:人脸识别和神经风格转换(作业:快乐屋人脸识别+图片风格转换)

文章目录作业1&#xff1a;快乐房子 - 人脸识别0. 朴素人脸验证1. 编码人脸图片1.1 使用卷积网络编码1.2 Triplet 损失2. 加载训练过的模型3. 使用模型3.1 人脸验证3.2 人脸识别作业2&#xff1a;神经风格转换1. 问题背景2. 迁移学习3. 神经风格转换3.1 计算内容损失3.2 计算风…

javascript练习题

1.用typeof bar”object”判断bar是否是一个object的潜在缺陷是什么&#xff1f;怎样才能避免这种缺陷&#xff1f; 答&#xff1a;尽管用typeof bar”object”是一个判断bar是一个object的可靠方法&#xff0c;但是令人惊讶的是&#xff0c;在JavaScript中null也是一个object!…

Maven3路程(三)用Maven创建第一个web项目(1)

一.创建项目 1.Eclipse中用Maven创建项目 上图中Next 2.继续Next 3.选maven-archetype-webapp后&#xff0c;next 4.填写相应的信息&#xff0c;Packaged是默认创建一个包&#xff0c;不写也可以 5.创建好项目后&#xff0c;目录如下&#xff1a; 至此&#xff0c;项目已经创建…

java基础之设计模式

1 设置模式之单例设计模式 概念&#xff1a;保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 &#xff08;1&#xff09;饿汉式&#xff1a; /*** Description 饿汉式* author refuel* version v1.0*/ public class TestSingleton{public static void ma…