给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为
来源:互联网 发布:js if多条件并列判断 编辑:程序博客网 时间:2024/05/16 00:47
1.题目一 (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
小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。
给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为一次比较中较重的钻石的编号,第二个元素为较轻的钻石的编号。最后给定之前的比较次数n。请返回这两颗钻石的关系,若g1更重返回1,g2更重返回-1,无法判断返回0。输入数据保证合法,不会有矛盾情况出现。
测试样例:
2,3,[[1,2],[2,4],[1,3],[4,3]],4
返回: 1
思路分析:由于无法判断的情形较多,因此逆向思维,剩余的为无法判断
* 首先:判断一步g1>g2情形,这样可以做到部分代码优化,简单的测试案例可以很快给出解
* 再判断g1>g2连环成立的情形;
* 第二步:代码复用
* 判断一步g1
* 再判断g1
* 第三步:剩余的为无法判断
* 时间复杂度:O(n^2)
* 总结:本题涉及基本的数组操作
* 注意事项:Java数组与C数组的区别
* */
package com.test;
public class Test {
public static int cmp(int g1, int g2, int records[][], int n){
for (int i = 0; i < n; i++)
if (records[i][0] == g1) {// g1>g2
{
if (records[i][1] == g2)
return 1;
else {//g1>一个非g2数字,扫描该数字是否比G2大
for (int k = 0; k < n; k++) {
if (records[k][0] == records[i][1])//其他队第一个数字是该非g2数字
if (records[k][1] == g2)
return 1;
}
}
}
} else {// g1
if (records[i][0] == g2) {
if (records[i][1] == g1)
return -1;
else {
for (int k = 0; k < n; k++) {
if (records[k][0] == records[i][1])
if (records[k][1] == g1)
return -1;
}
}
}
}
// 无法判断
return 0;
}
public static void main(String[] args) {
int g1 = 2, g2 = 3;
int records[][] = new int[][] { { 1, 2 }, { 2, 4 }, { 1, 3 },{ 4, 3 } };
int n = 4;
System.out.println(cmp(g1, g2, records, n));
}
}
1 0
- 给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为
- 两数之和二 给定一个整形的数组,找出其中的两个数使其和为某个指定的值,并返回这两个数的下标(数组下标是从0开始)。假设数组元素的值各不相同,则要求时间复杂度O(n),n为数组的长度
- 在给定的数组中找出两个元素和为给定值的所有元素对
- 在给定的数组中找出两个元素和为给定值的所有元素对
- 算法.给定数为数组中2个元素的之和,求出数组的下标
- 从行,列均为递增的二维数组中查找给定元素
- 使数据库中自动编号的列从给定编号开始
- 对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。 给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。
- 顺序数组查找第一个和最后一个给定元素
- C++寻找数组元素组合之和为给定数
- 1. Two Sum 给定一个数组和一个数,输出两个和为给定数的数组元素的下标
- 求每个元素之和为最大的给定数组的子数组
- 求给定的两个数组的公共元素,并将其返回为一个数组
- 给定一个整数数组,返回数组中两个元素的和为target的索引
- 给定一个整数数组,其中元素的取值范围为0到10000,求其中出现次数最多的数
- 查询数组中第一个大于给定数的元素的索引号
- 不重复打印排序数组中相加和为给定值的所有二元三元组
- 给定N个整数集合是否存在两个其和刚好为指定常数的元素
- Android Studio transformClassesWithDexForDebug
- 录屏软件
- 浅谈支付清结算系统中银行渠道的接入
- 大数据十进制转32进制
- 开发过程中的报java版本不对的问题
- 给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为
- Socket通信原理和实践
- 从尾到头打印链表
- View的onTouch()与onTouchEvent()
- 一个帖子学会Android开发四大组件
- zeroc ice demo project 编译不通过咋办?
- c++练习
- Java中的排序
- Math.round()