【leetcode】997.找到小镇的法官(双百)

古城微笑少年丶 2021-10-03 02:04 272阅读 0赞

在一个小镇里,按从 1 到 N 标记了 N 个人。传言称,这些人中有一个是小镇上的秘密法官。

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

小镇的法官不相信任何人。
每个人(除了小镇法官外)都信任小镇的法官。
只有一个人同时满足属性 1 和属性 2 。
给定数组 trust,该数组由信任对 trust[i] = [a, b] 组成,表示标记为 a 的人信任标记为 b 的人。

如果小镇存在秘密法官并且可以确定他的身份,请返回该法官的标记。否则,返回 -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
示例 4:

输入:N = 3, trust = [[1,2],[2,3]]
输出:-1
示例 5:

输入:N = 4, trust = [[1,3],[1,4],[2,3],[2,4],[4,3]]
输出:3

提示:

1 <= N <= 1000
trust.length <= 10000
trust[i] 是完全不同的
trust[i][0] != trust[i][1]
1 <= trust[i][0], trust[i][1] <= N

解题思路:根据投票思路谁获得了全票而且没有把票投给其他人就是法官,这里我贴出自己的思路过了86个样例,还是少考虑一个点。

  1. class Solution {
  2. public static int findJudge(int N, int[][] trust) {
  3. if(N<1 || trust.length<1)
  4. return -1;
  5. LinkedList<Integer> arrayList = new LinkedList<>();
  6. ArrayList<Integer> arrayList1 = new ArrayList<>();
  7. for(int i = 0;i<trust.length;i++){
  8. arrayList.add(trust[i][0]);
  9. }
  10. for(int i = 1;i<=N;i++){
  11. arrayList1.add(i);
  12. }
  13. for(int i:arrayList){
  14. if (arrayList.contains((Integer)i))
  15. arrayList1.remove((Integer) i);
  16. }
  17. if(!arrayList1.isEmpty())
  18. return arrayList1.get(0);
  19. else
  20. return -1;
  21. }
  22. }

20200409085921116.png

双百代码

  1. class Solution {
  2. public int findJudge(int N, int[][] trust) {
  3. int [] note = new int[N];
  4. if(N == 1)
  5. return 1;
  6. for(int i = 0;i<N;i++)
  7. note[i] = 0;
  8. //进行投票
  9. for(int i = 0;i<trust.length;i++)
  10. note[trust[i][1]-1]++;
  11. int flag = 0;
  12. //谁获得全票
  13. for(int i = 0;i<note.length;i++){
  14. if (note[i] == N-1)
  15. flag = i+1;
  16. }
  17. if(flag ==0)
  18. return -1;
  19. //而且没有投票给其他人
  20. for(int i = 0;i<trust.length;i++){
  21. if(trust[i][0] == flag)
  22. return -1;
  23. }
  24. return flag;
  25. }
  26. }

发表评论

表情:
评论列表 (有 0 条评论,272人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ZR#997

    ZR\997 解法: > 找找规律就出来了,全场最简单的一道题。 CODE: include<iostream> include<cstdi...

    相关 997. 找到小镇法官

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

    相关 ZROI#997

    [ZROI\997][ZROI_997] 这是某场\\(CF(Div.3)\\)的\\(C\\)题.我当时是选择了现场码. 因为那场\\(CF\\)我没打.这个题我当时