扑克牌大小_镜像二叉树
【摘要】 手套手套不要被这个题目给的测试样例给误导了!我们是要至少拿多少个手套才可以有一双配对成功!找出一种公式即可!就是我们一下把左手或者右手的手套都拿走,然后取更小的那个结果 ,结果减去最小值 然后在加1 就可以保证这只手颜色的手套都有!然后再在另一只手中取一只手套即可!![image-20220503182258017](C:\Users\hold on\AppData\Roaming\Typ...
手套
不要被这个题目给的测试样例给误导了!
我们是要至少拿多少个手套才可以有一双配对成功!找出一种公式即可!
就是我们一下把左手或者右手的手套都拿走,然后取更小的那个结果 ,结果减去最小值 然后在加1 就可以保证这只手颜色的手套都有!
然后再在另一只手中取一只手套即可!
![image-20220503182258017](C:\Users\hold on\AppData\Roaming\Typora\typora-user-images\image-20220503182258017.png)
还有指的注意的是当有一种颜色的手套数为0时,我们不们不能取0为最小值!
import java.util.*;
public class Gloves {
public int findMinimum(int n, int[] left, int[] right) {
// write code here
int sum = 0;//保存无法匹配的手套数!
int sumleft = 0; //左手手套数!
int sumright = 0;//右手手套数!
int leftMin = Integer.MAX_VALUE;//保存左右手手套最小值!
int rightMin = Integer.MAX_VALUE;
for(int i = 0;i<left.length;i++){
if(left[i]*right[i]==0){
//不匹配手套,
sum += (left[i]+right[i]);
}else{
sumleft += left[i];
sumright += right[i];
if(left[i]<leftMin){
//更新最小值
leftMin = left[i];
}
if(right[i]<rightMin){
//更新最小值
rightMin = right[i];
}
}
}
return sum + Math.min(sumleft-leftMin+1,sumright-rightMin+1)+1;
}
}
扑克牌大小
import java.util.*;
public class Main{
public static int comhelp(String[] lefts,int leftLen,String[] rights,int rightLen){
//参照表!
String table ="345678910JQKA2jokerJOKER" ;
//获取到左右第一张对应牌对应的出现位置下标,根据这个下标比较大小!
int l = table.indexOf(lefts[0]);
int r = table.indexOf(rights[0]);
//左右手牌数量相同!
if(leftLen==rightLen){
if(l>r){
return -1;//左手手牌取胜!
}else{
return 1;
}
}else{//手牌数量不相同,大小王比任何牌都大!
if(leftLen>1&&lefts[0].equals("joker")&&lefts[1].equals("JOKER")){//可能一方有大小王!
return -1;//左手手牌取胜!
}else if(rightLen>1&&rights[0].equals("joker")&&rights[1].equals("JOKER")){
return 1;//右手牌取胜!
}else if(leftLen==4||rightLen==4){//可能一方有炸!
if(leftLen==4){
return -1;
}else{
return 1;
}
}
}
//判断不了!
return 0;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
//通过-将两幅牌划分!
String[] strings = str.split("-");
String left = strings[0];
//再次划分 得到 左手手牌数组!
String[] lefts = left.split(" ");
int leftLen = lefts.length;
String right = strings[1];
//再次划分 得到 右手手牌数组!
String[] rights = right.split(" ");
int rightLen = rights.length;
int result = comhelp(lefts,leftLen,rights,rightLen);
if(result==-1){
System.out.println(left);
}else if(result==1){
System.out.println(right);
}else{
System.out.println("ERROR");
}
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)