圖:997. 找到小鎮(zhèn)的法官(簡(jiǎn)單)

在一個(gè)小鎮(zhèn)里,按從 1 到 n 為 n 個(gè)人進(jìn)行編號(hào)。傳言稱(chēng),這些人中有一個(gè)是小鎮(zhèn)上的秘密法官。

如果小鎮(zhèn)的法官真的存在,那么:

????????????小鎮(zhèn)的法官不相信任何人。

????????????每個(gè)人(除了小鎮(zhèn)法官外)都信任小鎮(zhèn)的法官。

????????????只有一個(gè)人同時(shí)滿(mǎn)足條件 1 和條件 2 。

給定數(shù)組?trust,該數(shù)組由信任對(duì) trust[i] = [a, b]?組成,表示編號(hào)為 a 的人信任編號(hào)為 b 的人。

如果小鎮(zhèn)存在秘密法官并且可以確定他的身份,請(qǐng)返回該法官的編號(hào)。否則,返回 -1。

示例 1:輸入:n = 2, trust = [[1,2]]? ? 輸出:2

示例 2:輸入:n = 3, trust = [[1,3],[2,3],[3,1]]? ??輸出:-1

解題思路:可以構(gòu)造一個(gè)關(guān)于各節(jié)點(diǎn)的hash表,這個(gè)hash表是二維的,hash[i][0]表示i-1節(jié)點(diǎn)的入度,hash[i][1]表示i-1節(jié)點(diǎn)的出度。由題可知,法官節(jié)點(diǎn)的入度為n-1,出度為0。

public?int?findJudge(int?n,?int[][]?trust)?{

????????int[][]?hashTable?=?new?int[n][2]; // 構(gòu)造hash表

????????for(int[]?tmp?:?trust)?{

????????????hashTable[tmp[1]-1][0]++;? //? tmp[1]-1節(jié)點(diǎn)的入度加1

????????????hashTable[tmp[0]-1][1]++;? //? tmp[0]-1節(jié)點(diǎn)的出度加1

????????}

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

????????????if(hashTable[i][0]==n-1?&&?hashTable[i][1]==0)?{ // 如果i節(jié)點(diǎn)的入度為n-1,出度為0

????????????????return?i+1;? // 則返回法官編號(hào)i+1

????????????}

????????}

????????return?-1; //否則返回-1

????}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容