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. linux修改用户密码期限

    1. https://www.cnblogs.com/wwwcf1982603555/p/15474557.html 设置密码复杂度: http://events.jianshu.io/p/533d3 ...

  2. SQL无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突

    在所在的SQL语句后面加上 COLLATE [排序规则]或者ALTER DATABASE [DBName] COLLATE Chinese_PRC_CI_AS

  3. python内置函数open()

    open()函数 介绍 open()函数用于打开文件并创建文件对象. open()函数的语法格式: file = open(filename, mode='r', buffering=-1, enco ...

  4. python os模块总结-目录、文件操作工具

    os (operating system)是python标准库中的操作系统接口,提供了很多与操作系统进行交互的函数,可快速对目录.文件进行操作. 下面我将在C:\Users\Administrator ...

  5. 个人数据保全计划:(2) NAS基础知识

    前言 距离去年国庆入手了NAS至今有好几个月时间了,NAS折腾起来有点麻烦,且实际作用因人而异,并没有想象中的好用,所以说好的这个系列一直没有更新~ 还有另一方面的原因,这些NAS的系统基于Linux ...

  6. ROS话题通信C++(附launch启动方式)

    ROS话题通信C++(附launch启动方式) 创建工作空间 mkdir -p topic_ws/src cd topic_ws catkin_make 设置环境变量 source ./devel/s ...

  7. GUI编程--1

    GUI编程--1 GUI是什么 (Graphical User Interface),即用户图形界面编程. 怎么玩 平时怎么运用 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 1.简介 ...

  8. Solon2 接口开发: 分布式 Api Gateway 开发预览

    建议使用专业的分布式网关产品,比如: nginx apisix [推荐] k8s ingress controller 等... 对 Solon 来讲,只有 Gateway:它调用本地接口时,则为本地 ...

  9. Kafka 之 HW 与 LEO

    更多内容,前往 IT-BLOG HW(High Watermark):俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个 offset 之前的消息.分区 ISR 集合中的每 ...

  10. Django笔记十之values_list指定字段取值及distinct去重处理

    这篇笔记将介绍 reverse.distinct.values 和 values_list 的用法. 本篇笔记目录如下: reverse() values() values_list() distin ...