手套_扑克牌大小

手套

手套

image-20220503170542117

不要被这个题目给的测试样例给误导了!

我们是要至少拿多少个手套才可以有一双配对成功!找出一种公式即可!

就是我们一下把左手或者右手的手套都拿走,然后取更小的那个结果 ,结果减去最小值 然后在加1 就可以保证这只手颜色的手套都有!

然后再在另一只手中取一只手套即可!

![image-20220503182258017](https://uploadfiles.nowcoder.com/images/20190919/56_1568900435177_29C080A5413E925FE3B3CCB4048AB99B 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");
        }


    }
}
全部评论
有人玩过超小款的扑克牌吗?
点赞 回复 分享
发布于 2022-08-27 13:20 河南

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务