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

  • https://leetcode.cn/problems/find-the-town-judge
  • 小镇里有 n 个人,按从 1 到 n 的顺序编号。传言称,这些人中有一个暗地里是小镇法官。

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

  • 小镇法官不会信任任何人。
  • 每个人(除了小镇法官)都信任这位小镇法官。
  • 只有一个人同时满足属性 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

你可能感兴趣的:(笔记,leetcode,算法,c++)