leetcode(力扣) 997. 找到小镇的法官 (剧本杀推理)
文章目录
- 题目描述:
- 思路分析
- 完整代码:
题目描述:
小镇里有 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. 找到小镇的法官 (剧本杀推理)相关推荐
- 【快乐水题】997. 找到小镇的法官
原题: 力扣链接:997. 找到小镇的法官 题目简述: 在一个小镇里,按从 1 到 n 为 n 个人进行编号.传言称,这些人中有一个是小镇上的秘密法官. 如果小镇的法官真的存在,那么: 小镇的法官不相 ...
- 997. 找到小镇的法官_小镇...
997. 找到小镇的法官 Bethlehem Media Net strives to be the "voice of the voiceless" bringing the s ...
- 力扣题目——997. 找到小镇的法官
注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 在一个小镇里,按从 1 到 n 为 n 个人进行编号.传言称,这些人中有一个 ...
- LeetCode 997. 找到小镇的法官(图的出度和入度)
1. 题目 在一个小镇里,按从 1 到 N 标记了 N 个人.传言称,这些人中有一个是小镇上的秘密法官. 如果小镇的法官真的存在,那么: 小镇的法官不相信任何人. 每个人(除了小镇法官外)都信任小镇的 ...
- leetcode 997 找到小镇的法官
https://leetcode-cn.com/problems/find-the-town-judge/ 题目 在一个小镇里,按从111到nnn为nnn个人进行编号.传言称,这些人中有一个是小镇上的 ...
- 2022-4-6 Leetcode 997.找到小镇的法官——【原来是图的问题啊~】
第一版,原来其他人可以互相信任. class Solution {public:int findJudge(int n, vector<vector<int>>& tr ...
- LeetCode简单题之找到小镇的法官
题目 小镇里有 n 个人,按从 1 到 n 的顺序编号.传言称,这些人中有一个暗地里是小镇法官. 如果小镇法官真的存在,那么: 小镇法官不会信任任何人. 每个人(除了小镇法官)都信任这位小镇法官. 只 ...
- 997. 找到小镇的法官
在一个小镇里,按从 1 到 N 标记了 N 个人.传言称,这些人中有一个是小镇上的秘密法官. 如果小镇的法官真的存在,那么: 小镇的法官不相信任何人. 每个人(除了小镇法官外)都信任小镇的法官. 只有 ...
- 每日一题 leetcode 997. 找到小镇的法官 java
class Solution {public int findJudge(int n, int[][] trust) {if(trust.length==0){if(n==1) return 1;el ...
最新文章
- 1001 A+B Format
- 又来说一下顺序~关于唯一索引和唯一约束的顺序
- Linux环境下使用dosemu写汇编
- 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
- SpringCloud实战与原理---快速入门
- spring 源码分析01
- GBDT分类和回归例子
- 20165223《Java程序设计》第八周Java学习总结
- Linux文件权限一共10位长度,分成四段,每段的含义
- java基础--集合框架的认识
- Unity Android汉化
- maven pom.xml文件配置ojdbc7报错解决
- 2022五一数学建模有何思路模型?
- matlab绿屏抠像代码,DV影像素材抠像效果研究
- 「量化技术」Inv_Strategy 胜率76%的趋势反转策略
- 华为网页手机云服务器,华为Cloud 云服务
- JS 服务器推送技术 WebSocket 入门指北
- element-ui calendar 日历控件实现编辑假期功能以及样式修改
- SolrCloud 的搭建、使用
- 理解pandas的groupby().apply()