leetcode997. 找到小镇的法官(简单,图的度)

给定一个表示信任关系的数组,编程找出小镇的法官。如果存在法官且能确定其编号,返回该编号;否则,返回-1。错解示例说明了当多个条件需同时满足时,检查判断的正确方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果小镇法官真的存在,那么:

  • 小镇法官不会信任任何人。
  • 每个人(除了小镇法官)都信任这位小镇法官。
  • 只有一个人同时满足属性 1 和属性 2 。
  • 给你一个数组 trust ,其中 trust[i] = [ai, bi] 表示编号为 ai 的人信任编号为 bi 的人。

如果小镇法官存在并且可以确定他的身份,请返回该法官的编号;否则,返回 -1 。

题解

class Solution {
public:
    int findJudge(int n, vector<vector<int>>& trust) {
        if(n==1) return 1;
        vector<int> books(n+1,0);
        for(auto v:trust){
            books[v[0]] -= 1;
            books[v[1]] += 1;
        }
        for(int i=0;i<books.size();i++){
            if(books[i] == n-1){
                return i;
            }
        }
        return -1;

    }
};

错解

class Solution {
public:
    int findJudge(int n, vector<vector<int>>& trust) {
        int flag = trust[0][1];
        for(auto v:trust){
            if(v[1] != flag){
                return -1;
            }
        }
        return flag;

    }
};
// [[1,3],[1,4],[2,3],[2,4],[4,3]] 输出-1 预测结果 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值