文章目录

  • 题目描述:
  • 思路分析
  • 完整代码:

题目描述:

小镇里有 n 个人,按从 1 到 n 的顺序编号。传言称,这些人中有一个暗地里是小镇法官。

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

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

就以上两个点遍历数组就行了。

题目所给的数组是这样的:trust = [[1,2]] 就说明 1信任2.

所以法官是不可能在该二维数组里一维数组的0号位出现的,因为法官不相信人任何人嘛。

  • 先遍历一遍数组找到所有 有信任别人的人,则这个人就不可能是法官,添加到数组 ordi_p 中,遍历结束,如果ordi_p 等于题目所给的小镇人数n,则说明小镇中没有法官,直接返回-1.
  • 然后我们再次遍历该数组,构造哈希表。key存可能的法官,val存信任该法官的人数。
  • 最后我们遍历哈希表,法官必须有 n-1个人信任他,也就是说val必须等于n-1,并且还不能再前面的ordi_p数组中,符合条件既是答案。

完整代码:

class Solution:def findJudge(self, n: int, trust: List[List[int]]) -> int:if len(trust) == 0:if n == 1:return 1else:return -1hs = {}ordi_p = [] # 如果有相信的人, 则肯定不是法官for i in trust:ordi_p.append(i[0])if ordi_p == n:return -1print('这里是ordi_p',ordi_p)for i in trust:# key 存可能的法官, val存信任法官的人数if i[1] not in  hs:hs[i[1]] = 1else:hs[i[1]] +=1print('这里是hs',hs)# 法官需要有 n-1个人相信他for p in hs:if hs[p] == n-1 and p not in ordi_p:return preturn -1

leetcode(力扣) 997. 找到小镇的法官 (剧本杀推理)相关推荐

  1. 【快乐水题】997. 找到小镇的法官

    原题: 力扣链接:997. 找到小镇的法官 题目简述: 在一个小镇里,按从 1 到 n 为 n 个人进行编号.传言称,这些人中有一个是小镇上的秘密法官. 如果小镇的法官真的存在,那么: 小镇的法官不相 ...

  2. 997. 找到小镇的法官_小镇...

    997. 找到小镇的法官 Bethlehem Media Net strives to be the "voice of the voiceless" bringing the s ...

  3. 力扣题目——997. 找到小镇的法官

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 在一个小镇里,按从 1 到 n 为 n 个人进行编号.传言称,这些人中有一个 ...

  4. LeetCode 997. 找到小镇的法官(图的出度和入度)

    1. 题目 在一个小镇里,按从 1 到 N 标记了 N 个人.传言称,这些人中有一个是小镇上的秘密法官. 如果小镇的法官真的存在,那么: 小镇的法官不相信任何人. 每个人(除了小镇法官外)都信任小镇的 ...

  5. leetcode 997 找到小镇的法官

    https://leetcode-cn.com/problems/find-the-town-judge/ 题目 在一个小镇里,按从111到nnn为nnn个人进行编号.传言称,这些人中有一个是小镇上的 ...

  6. 2022-4-6 Leetcode 997.找到小镇的法官——【原来是图的问题啊~】

    第一版,原来其他人可以互相信任. class Solution {public:int findJudge(int n, vector<vector<int>>& tr ...

  7. LeetCode简单题之找到小镇的法官

    题目 小镇里有 n 个人,按从 1 到 n 的顺序编号.传言称,这些人中有一个暗地里是小镇法官. 如果小镇法官真的存在,那么: 小镇法官不会信任任何人. 每个人(除了小镇法官)都信任这位小镇法官. 只 ...

  8. 997. 找到小镇的法官

    在一个小镇里,按从 1 到 N 标记了 N 个人.传言称,这些人中有一个是小镇上的秘密法官. 如果小镇的法官真的存在,那么: 小镇的法官不相信任何人. 每个人(除了小镇法官外)都信任小镇的法官. 只有 ...

  9. 每日一题 leetcode 997. 找到小镇的法官 java

    class Solution {public int findJudge(int n, int[][] trust) {if(trust.length==0){if(n==1) return 1;el ...

最新文章

  1. 1001 A+B Format
  2. 又来说一下顺序~关于唯一索引和唯一约束的顺序
  3. Linux环境下使用dosemu写汇编
  4. 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
  5. SpringCloud实战与原理---快速入门
  6. spring 源码分析01
  7. GBDT分类和回归例子
  8. 20165223《Java程序设计》第八周Java学习总结
  9. Linux文件权限一共10位长度,分成四段,每段的含义
  10. java基础--集合框架的认识
  11. Unity Android汉化
  12. maven pom.xml文件配置ojdbc7报错解决
  13. 2022五一数学建模有何思路模型?
  14. matlab绿屏抠像代码,DV影像素材抠像效果研究
  15. 「量化技术」Inv_Strategy 胜率76%的趋势反转策略
  16. 华为网页手机云服务器,华为Cloud 云服务
  17. JS 服务器推送技术 WebSocket 入门指北
  18. element-ui calendar 日历控件实现编辑假期功能以及样式修改
  19. SolrCloud 的搭建、使用
  20. 理解pandas的groupby().apply()

热门文章

  1. 利用Windows Azure Queue Storage给AutoCAD传递对象
  2. UA OPTI544 量子光学2 光与介质相互作用的经典力学方法
  3. 资本主义反抗指南精要(v0.1)
  4. SDI接口图像预处理模块
  5. python助教酱酱有用吗_研究生生活总结(1):当助教的那些人和事
  6. Semantic UI 之 信息 message
  7. Go测试开发(二) 多线程简单斗地主
  8. Altium 学习笔记
  9. 将安卓手机短信导入到iPhone6 plus中
  10. 一个简单USB插入检测电路