Leetcode 851. 喧闹和富有 (建图,拓扑排序同时找最小值)

本文介绍了一种算法,通过分析rich和quiet的关系,利用拓扑排序的方法来确定富人向穷人传递资源的答案。关键步骤在于根据richness和quietness更新ans数组。适用于解决与社会等级相关的数据结构问题。
摘要由CSDN通过智能技术生成

 

 根据题目条件,从富人向穷人连边,然后按照拓扑排序并跟新ans[x]和ans[y], 这样一定能找出答案。

原因是有如下关系:如果rich[x] > rich[y], 并且quite[ans[x]] < quites[ans[y]], 那么ans[y] = ans[x],其中x需要已经被计算出来,因此需要拓扑排序。

class Solution {
public:
    vector<int> loudAndRich(vector<vector<int>>& richer, vector<int>& quiet) {
        int n = quiet.size();
        vector<vector<int>> g(n);
        vector<int> inDeg(n);
        for (auto r : richer) {
            g[r[0]].push_back(r[1]);
            inDeg[r[1]]++;
        }

        queue<int> q;
        for (int i = 0; i < n; i++) {
            if (in
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值