zoukankan      html  css  js  c++  java
  • 比较重量(网易笔试题)

    小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。


    给定两颗钻石的编号 g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为一次比较中较重的钻石的编号,第二个元素为较轻的钻石的编号。最后给定之前的比较次数n。请返回这两颗钻石的关系,若g1更重返回1,g2更重返回-1,无法判断返回0。输入数据保证合法,不会有矛盾情况出现。


    测试样例:

    2,3,[[1,2],[2,4],[1,3],[4,3]],4


    返回: 

    1



    java版本的代码实现:

    package cn.cat.test;
    
    public class Test {
    	/**比较重量(网易笔试题)
    	 * @Description: 
    	 * @author gwj
    	 * @Created 2017年9月15日 下午4:39:58 
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		int g1 = 2, g2 = 3;
    		//使用Pair类来代替二维数组的表示。例如new Pair(1,2)表示数组[1,2]
    		Pair[] data = new Pair[]{new Pair(1,2), new Pair(2,4), new Pair(1,3), new Pair(4,3)};
    		int result = compare(g1, g2, data);
    		System.out.println(result);
    	}
    	
    	static int compare(int g1, int g2, Pair[] data) {
    		//按正常比较
    		int result = compareBigger(g1, g2, data);
    		//如果无法判断结果,则尝试交换两个钻石的比较位置
    		if (result == 0) {
    			result = compareBigger(g2, g1, data);
    			//因为交换了比较位置,注意返回结果是互逆的
    			result = -result;
    		}
    		return result;
    	}
    	
    	static int compareBigger(int g1, int g2, Pair[] data) {
    		for (Pair pair : data) {
    			if (pair.left == g1) {
    				if (pair.right == g2) {
    					//右边元素更好是需要比较的元素,则只需可以得出比较结果,注意返回的数值为1。
    					return 1;
    				} else {
    					//右边元素还不是需要比较的元素,则进行递归查找。
    					return compareBigger(pair.right, g2, data);
    				}
    			}
    		}
    		
    		return 0;
    	}
    	
    	
    	
    	//键值对封装对象
    	private static class Pair{
    		int left;
    		int right;
    		public Pair(int left, int right) {
    			this.left = left;
    			this.right = right;
    		}
    		
    	}
    	
    }
    


  • 相关阅读:
    【字符串】C语言_字符串常量详解
    2138=数据结构实验之图论三:判断可达性
    3363=数据结构实验之图论七:驴友计划
    1916=字符串扩展(JAVA)
    2140=数据结构实验之图论十:判断给定图是否存在合法拓扑序列
    3364=数据结构实验之图论八:欧拉回路
    2138=数据结构实验之图论三:判断可达性
    2271=Eddy的难题(JAVA)
    2246=时间日期格式转换(JAVA)
    2804=数据结构实验之二叉树八:(中序后序)求二叉树的深度
  • 原文地址:https://www.cnblogs.com/catgwj/p/7604871.html
Copyright © 2011-2022 走看看