Loud and Rich
In a group of N people (labelled0, 1, 2, ..., N-1), each person has different amounts of money, and different levels of quietness.
For convenience, we'll call the person with labelx, simply "personx".
We'll say thatricher[i] = [x, y]if personx definitely has more money than person y. Note thatricher may only be a subset of valid observations.
Also, we'll sayquiet[x] = qif personx has quietnessq.
Now, returnanswer, whereanswer[x] = yifyis the least quiet person (that is, the personywith the smallest value ofquiet[y]), among all people who definitely have equal to or more money than personx.
Example 1:
Input:
richer =
[[1,0],[2,1],[3,1],[3,7],[4,3],[5,3],[6,3]]
, quiet =
[3,2,5,4,6,1,7,0]
Output:
[5,5,2,5,4,5,6,7]
Explanation:
answer[0] = 5.
Person 5 has more money than 3, which has more money than 1, which has more money than 0.
The only person who is quieter (has lower quiet[x]) is person 7, but
it isn't clear if they have more money than person 0.
answer[7] = 7.
Among all people that definitely have equal to or more money than person 7
(which could be persons 3, 4, 5, 6, or 7), the person who is the quietest (has lower quiet[x])
is person 7.
The other answers can be filled out with similar reasoning.Note:
分析
DFS建图,比自己大的放list。dfs list里选quiet最小的。也是带memo的
简缩版
扩展板DFS
BFS
富点跟一串穷点。富点入度0,topo排序
res[]里指向的是比他富切比他安静的人
Last updated
Was this helpful?