圖-入度n-1,出度0-lc997

小鎮裏有 ​​n​​​ 個人,按從 ​​1​​​ 到 ​​n​​ 的順序編號。傳言稱,這些人中有一個暗地裏是小鎮法官。
如果小鎮法官真的存在,那麼:

  1. 小鎮法官不會信任任何人。
  2. 每個人(除了小鎮法官)都信任這位小鎮法官。
  3. 只有一個人同時滿足屬性 1 和屬性 2 。
    給你一個數組 ​​trust​​​ ,其中 ​​trust[i] = [ai, bi]​​​ 表示編號爲 ​​ai​​​ 的人信任編號爲 ​​bi​​ 的人。
    如果小鎮法官存在並且可以確定他的身份,請返回該法官的編號;否則,返回 ​​-1​​ 。
    示例 1:
    輸入:n = 2, trust = [[1,2]]
    輸出:2示例 2:
    輸入:n = 3, trust = [[1,3],[2,3]]
    輸出:3示例 3:
    輸入:n = 3, trust = [[1,3],[2,3],[3,1]]
    輸出:-1提示:
    • ​​1 <= n <= 1000​​
    • ​​0 <= trust.length <= 104​​
    • ​​trust[i].length == 2​​
    • ​​trust​​​ 中的所有​​trust[i] = [ai, bi]​​ 互不相同
    • ​​ai != bi​​
    • ​​1 <= ai, bi <= n​​

思路:可以維護一個圖的矩陣,快速定位;也可以維護一個一緯數組,記錄其被相信的次數,我用的是第二種
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int findJudge(int n, int[][] trust) {

    if(trust.length==0){
        if(n==1){
            return n;
        }else{
            return -1;
        }
    }


    int[] trustArray = new int[n+1];
    Arrays.fill(trustArray,0);

    for (int i = 0; i < trust.length; i++) {

// System.out.println(trust[i][1]);
trustArray[trust[i][1]]++;
trustArray[trust[i][0]]--;
}

    for (int i = 0; i <= n; i++) {

// System.out.println(i+" "+trustArray[i]);
if(trustArray[i]==n-1){
return i;
}
}
return -1;
}
}
//leetcode submit region end(Prohibit modification and deletion)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章