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
}

执行结果如下:


左神java代码

2022-03-31:有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱, 以及不同程度的安静值(quietness) 为了方便起见,我们将编号为 x 的人简称为的更多相关文章

  1. 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 ...

  2. 2018/03/31 每日一个Linux命令 之 date

    date 命令主要用于查看和修改时间和时区 -- 这里主要学习基本的查看和设置时间和时区的方法. 直接显示日期 date '+%D' 效果 vagrant@hong:~$ date '+%D' 03/ ...

  3. ngx-bootstrap使用03 Alerts组件、利用Object.assign复制对象

    1 Alerts 该组件用于给用户操作提供反馈信息或者提供一些警告信息 2 用法 2.1 下载ngx-bootstrap依赖 参考博文:点击前往 2.2 在模块级别导入AlertModule模块 技巧 ...

  4. 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 ...

  5. 2016.03.31,英语,《Vocabulary Builder》Unit 08

    tend/tent: from the Latin tendere, meaning 'to stretch, extend, or spread'. tent: [tent] n. 帐篷 vt.&a ...

  6. Cheatsheet: 2015 03.01 ~ 03.31

    Web The Architecture of Algolia's Distributed Search Network No promises: asynchronous JavaScript wi ...

  7. Cheatsheet: 2014 03.01 ~ 03.31

    .NET Should I be concerned about PDB files? async and await -Simplified-Internals Web Performance tr ...

  8. 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 ...

  9. “耐撕”团队 2016.03.31 站立会议

    1. 时间: 19:30--19:50  共计20分钟. 2. 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:ht ...

  10. Cheatsheet: 2018 03.01 ~ 2018 03.31

    Docker A Developer's Guide to Docker: A Gentle Introduction The Advantages of Using Kubernetes and D ...

随机推荐

  1. 在app中如何使weib-view不铺满全屏,自适应页面

    // #ifdef APP-PLUS //自建webview var currentWebview = this.$scope.$getAppWebview(); var height = this. ...

  2. 【BUUCTF】强网杯 2019随便注1 write up

    输入万能密码1' or 1=1# ,判断存在sql注入, SQL注入的万能密码实际上是利用了网址后台的漏洞,打开下面的网址不用密码和账号也可以登录后台. 万能密码原理: 万能密码能够绕过sql检测,在 ...

  3. adb shell monkey

    monkey 在模拟器或真机里在,.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),打开app 查看包名 adb shell dumpsys window windows | f ...

  4. ES2016-ES2020

    参考:https://zhuanlan.zhihu.com/p/59096242 备注:可以使用ES6取代的10个Lodash特性 https://www.w3cplus.com/javascript ...

  5. codec

    1.codec究竟是什么 音频解码芯片:Audio codec,又叫声卡:本质就是ADC和DAC 2.codec的作用 在移动设备中,codec的作用可以归结为4种,分别如下: playback:对P ...

  6. 制作可以显示GIF动图的activeX 控件

    因为工作需要,我需要一个可以显示gif 动图的控件,用来在VBS中显示动图,结果找了半天发现根本没有这样的控件,所以只能搜集资料自己来制作一个. 下面记录一下步骤: 1. 下载 PictureEx.h ...

  7. Linux下apache日志(按日期存放)分析与状态查看方法

    转载网址: https://blog.csdn.net/weixin_42272246/article/details/125602258

  8. 自己动手从零写桌面操作系统GrapeOS系列教程——14.屏幕显示原理与文本模式

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 一.屏幕显示原理 电脑显示器屏幕是由很多很小的像素组成的.每个像素就像是一个小灯泡,在屏幕上一排一排的整齐排列着.只要能控制每个像素的颜色就能显 ...

  9. 制作微软原版Windows11 PE(含Powershell)

    1.adksetup下载链接:https://download.microsoft.com/download/1/f/d/1fd2291e-c0e9-4ae0-beae-fbbe0fe41a5a/ad ...

  10. Salesforce LWC学习(二十) CLI篇:新版本不支持Audience解决方案

    本篇参考:https://github.com/forcedotcom/cli/issues/470 https://developer.salesforce.com/docs/atlas.en-us ...