zoukankan      html  css  js  c++  java
  • 997.找到小镇的法官

    public int findJudge(int N, int[][] trust) {
    		if( N==1 && trust.length==0) {
    			return 1;
    		}
    		if (trust.length != 0) {
    			// arr用于投票记录
    			int arr[] = new int[10000];
    			// temp用于记录最大值 //x 记录谁是可能法官 // bol 判断是不是有多个N-1的值
    			int temp = arr[0];
    			int x = 1;
    			int bol = 0;
    			// 所有人的结果读入 只是读入投票人选出的对象
    			int length = trust.length;
    			int wide = trust[0].length;
    			for (int i = 0; i < length; i++) {
    				int y = trust[i][wide - 1] - 1;
    				arr[y]++;
    			}
    			// 进行判断 看是不是合适答案
    			for (int i = 0; i < N; i++) {
    				// 记录最大值的下标 也就是法官的号数
    				if (arr[i] > temp) {
    					temp = arr[i];
    					x = i + 1;
    				}
    				 if (arr[i] == N - 1) {
    					bol++;
    				}
    			}
    			// 如果票数不是N-1或者 多个同样的票数则return-1
    			if (temp != N - 1 || bol != 1) {
    				return -1;
    			}
    			// 筛选条件二
    			else {
    				// 是那个符合条件的人是否还投票
    				for (int i = 0; i < length; i++) {
    					if (trust[i][0] == x)
    						return -1;
    				}
    			}
    			return x;
    		} 
    		else {
    			return -1;
    		}
    	}
    

    其他的解法:

    public int findJudge(int N, int[][] trust) {
            int[] truster = new int[N+1];
            int[] trustee = new int[N+1];
            
            for (int[] pair : trust) {
                truster[pair[0]]++;//统计投票人被投票情况
                trustee[pair[1]]++;//统计投票人投给谁
            }
            for (int i = 1; i <= N; i++) {
                if (truster[i] == 0 && trustee[i] == N-1) {
                    return i;
                }
            }
            return -1;
    }
    
  • 相关阅读:
    2014 中华架构师大会 回想
    mybatis重拾---部署官方demo
    D 语言学习感受
    D语言学习
    D语言简介
    C++输入cin详解
    C++源文件的后缀名问题
    C 函数指针详解
    Linux下的五个查找命令:grep、find、locate、whereis、which
    Qt---QFtp上传、下载二进制文件
  • 原文地址:https://www.cnblogs.com/cznczai/p/11150514.html
Copyright © 2011-2022 走看看