2022-03-31:有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱, 以及不同程度的安静值(quietness) 为了方便起见,我们将编号为 x 的人简称为
2022-03-31:有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱,
以及不同程度的安静值(quietness)
为了方便起见,我们将编号为 x 的人简称为 "person x "。
给你一个数组 richer ,其中 richer[i] = [ai, bi] 表示 person ai 比 person bi 更有钱
另给你一个整数数组 quiet ,其中 quiet[i] 是 person i 的安静值
richer 中所给出的数据 逻辑自洽
也就是说,在 person x 比 person y 更有钱的同时,不会出现 person y 比 person x 更有钱的情况
现在,返回一个整数数组 answer 作为答案,其中 answer[x] = y 的前提是:
在所有拥有的钱肯定不少于 person x 的人中,person y 是最安静的人(也就是安静值 quiet[y] 最小的人)。
答案2022-03-31:
拓扑排序。
代码用golang编写。代码如下:
package main
import "fmt"
func main() {
richer := [][]int{{1, 0}, {2, 1}, {3, 1}, {3, 7}, {4, 3}, {5, 3}, {6, 3}}
quiet := []int{3, 2, 5, 4, 6, 1, 7, 0}
ret := loudAndRich(richer, quiet)
fmt.Println(ret)
}
// richer[i] = {a, b} a比b更有钱 a -> b
// quiet[i] = k, i这个人安静值是k
func loudAndRich(richer [][]int, quiet []int) []int {
N := len(quiet)
// a -> b
// a -> c
// b -> c
// a : b c
// b : c
// nexts[0] = {5,7,3}
// 0 : 5 7 3
// 5最没钱的,
// nexts[5] = { }
nexts := make([][]int, 0)
for i := 0; i < N; i++ {
// 0 : {}
// 1 : {}
// n-1 : {}
nexts = append(nexts, make([]int, 0))
}
// 入度
// 0 : 0
// 1 : 2
degree := make([]int, N)
for _, r := range richer {
// [a,b] a -> b
nexts[r[0]] = append(nexts[r[0]], r[1])
degree[r[1]]++
}
// 所有入度为0的点,入队列
zeroQueue := make([]int, N)
l := 0
r := 0
for i := 0; i < N; i++ {
if degree[i] == 0 {
zeroQueue[r] = i
r++
}
}
// ans[i] = j : 比i有钱的所有人里,j最安静
ans := make([]int, N)
for i := 0; i < N; i++ {
ans[i] = i
}
for l < r { // 如果队列不空
// 弹出一个入度为0的点
cur := zeroQueue[l]
l++
// 1) 消除当前cur的影响!
for _, next := range nexts[cur] {
// cur : 比cur有钱,最安静的!ans[cur]
if quiet[ans[next]] > quiet[ans[cur]] {
ans[next] = ans[cur]
}
degree[next]--
if degree[next] == 0 {
zeroQueue[r] = next
r++
}
}
}
return ans
}
执行结果如下:

2022-03-31:有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱, 以及不同程度的安静值(quietness) 为了方便起见,我们将编号为 x 的人简称为的更多相关文章
- Shutting down CodePlex 03/31/2017
Almost 11 years after we created CodePlex, it’s time to say goodbye. We launched CodePlex in 2006 b ...
- 2018/03/31 每日一个Linux命令 之 date
date 命令主要用于查看和修改时间和时区 -- 这里主要学习基本的查看和设置时间和时区的方法. 直接显示日期 date '+%D' 效果 vagrant@hong:~$ date '+%D' 03/ ...
- ngx-bootstrap使用03 Alerts组件、利用Object.assign复制对象
1 Alerts 该组件用于给用户操作提供反馈信息或者提供一些警告信息 2 用法 2.1 下载ngx-bootstrap依赖 参考博文:点击前往 2.2 在模块级别导入AlertModule模块 技巧 ...
- Cheatsheet: 2016 03.01 ~ 03.31
JAVA Quick Java 8 or Java 7 Dev Environments With Docker Printing arrays by hacking the JVM Mobile H ...
- 2016.03.31,英语,《Vocabulary Builder》Unit 08
tend/tent: from the Latin tendere, meaning 'to stretch, extend, or spread'. tent: [tent] n. 帐篷 vt.&a ...
- Cheatsheet: 2015 03.01 ~ 03.31
Web The Architecture of Algolia's Distributed Search Network No promises: asynchronous JavaScript wi ...
- Cheatsheet: 2014 03.01 ~ 03.31
.NET Should I be concerned about PDB files? async and await -Simplified-Internals Web Performance tr ...
- ARTS Challenge- Week 1 (2019.03.25~2019.03.31)
1.Algorithm - at least one leetcode problem per week(Medium+) 986. Interval List Intersections https ...
- “耐撕”团队 2016.03.31 站立会议
1. 时间: 19:30--19:50 共计20分钟. 2. 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:ht ...
- Cheatsheet: 2018 03.01 ~ 2018 03.31
Docker A Developer's Guide to Docker: A Gentle Introduction The Advantages of Using Kubernetes and D ...
随机推荐
- 微信小程序中如何上传图片来识别身份证银行卡?
Page({ shibie2(){ //识别银行卡 var that=this wx.chooseImage({ //选择图片 count: 1, //上传数量 sizeType: ['origina ...
- finereport连接mysql8.0
1.java包更新 2.下载地址:https://dev.mysql.com/downloads/connector/j/ 3.替换文件为8.0删除5.1版本 4.驱动器手动输入com.mysql.c ...
- finereport连接sql server
1.添加jdbc 2.选择sql server 3.jdbc:sqlserver://localhost:1433(localhost=其他IP地址)
- 【BUUCTF】强网杯 2019随便注1 write up
输入万能密码1' or 1=1# ,判断存在sql注入, SQL注入的万能密码实际上是利用了网址后台的漏洞,打开下面的网址不用密码和账号也可以登录后台. 万能密码原理: 万能密码能够绕过sql检测,在 ...
- redis学习(一)常用命令
clear 清屏 info 获取当前redis的版本等信息 keys pattern 查找所有符合给定模式( pattern)的 key keys * 查找所有的key type key 查看某个ke ...
- 《MySQL是怎样运行的》第五章小结
- Spring 的核心组件详解
Spring 总共有十几个组件,但是真正核心的组件只有三个:Core.Context 和 Bean.它们构建起了整个 Spring的骨骼架构,没有它们就不可能有 AOP.Web 等上层的特性功能. 一 ...
- 聊聊Spring扩展点BeanPostProcessor和BeanFactoryPostProcessor
介绍 今天聊一聊spring中很重要的两个扩展点BeanPostProcessor和BeanFactoryPostProcessor,spring之所以如次强大,是因为它提供了丰富的功能给我们使用,但 ...
- pandas之统计函数
Pandas 的本质是统计学原理在计算机领域的一种应用实现,通过编程的方式达到分析.描述数据的目的.而统计函数则是统计学中用于计算和分析数据的一种工具.在数据分析的过程中,使用统计函数有助于我们理解和 ...
- pysimplegui之光标 - 元素和窗口的设置
光标 - 元素和窗口的设置 通过将光标设置为元素或整个窗口,可以将普通箭头光标更改为其他内容.当您将鼠标移到元素或窗口上时,结果将是光标发生变化. 最好的例子之一是 URL.当鼠标移到链接上时,用户习 ...