首页 > 其他分享 >力扣简2347 最好的扑克手牌

力扣简2347 最好的扑克手牌

时间:2023-02-21 10:46:05浏览次数:42  
标签:map 2347 return ranks suits 力扣 int && 手牌

暴力求解 但是忽略了三条中的2=3=4的情况

后面写着写着 想了想可以构建一个数组 又觉得占内存 还是暴力解了

    public static String bestHand(int[] ranks, char[] suits) {
        if(suits[0]==suits[1]&&suits[2]==suits[3]&&suits[4]==suits[0]&&suits[0]==suits[2]) {
            return ("Flush");
        }
        Arrays.sort(ranks);
        
        if((ranks[0]==ranks[1]&&ranks[1]==ranks[2])||(ranks[2]==ranks[3]&&ranks[3]==ranks[4])||(ranks[3]==ranks[1]&&ranks[1]==ranks[2])) {
            return("Three of a Kind");//最开始这里的12345中2=3=4情况被忽略了
        }
        if(ranks[0]==ranks[1]||ranks[2]==ranks[1]||ranks[2]==ranks[3]||ranks[3]==ranks[4]) {
            return("Pair");
        }
        return("High Card");
    }

 

构建一个计数的数组 更慢了哈哈哈

public String bestHand(int[] ranks, char[] suits) {
        int[] count= {1,1,1,1,1};
        if(suits[0]==suits[1]&&suits[2]==suits[3]&&suits[4]==suits[0]&&suits[0]==suits[2]) {
            return ("Flush");
        }
        Arrays.sort(ranks);
        for(int i=1;i<5;i++) {
            if(ranks[i]==ranks[i-1]) {
                count[i]=count[i-1]+1;
            }
        }
        Arrays.sort(count);
        if(count[4]>=3) {
            return("Three of a Kind");//最开始这里的12345中2=3=4情况被忽略了
        }
        if(count[4]==2) {
            return("Pair");
        }
        return("High Card");
    }

 

 

看题解答案 用哈希表{其实是集合吧} 然后想应该用字典更合适 结果人家其实就是用的字典 熟悉一下

public static String bestHand(int[] ranks, char[] suits) {
        Set<Character> set =new HashSet<Character>();
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(char suit:suits) {
            set.add(suit);
        }
        if(set.size()==1) {
            return("Flush");
        }
        for(int rank:ranks) {
            map.put(rank, map.getOrDefault(rank, 0)+1);
        }
        if(map.size()==5) {
            return("High Card");
        }
//        else if(map.size()==3) {//刚开始还考虑光用尺寸判断 然后发现当size=3可能是3 1 1或者2 2 1 无法判断    
//        }
//        for(Map.Entry<Integer,Integer>entry:map.entrySet()) {//只看value就可以把 所以也没必要key-value全取
//            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());  
//        }
        for(int i:map.values()) {
            if(i>=3) {
                return("Three of a Kind");
            }
        }
        return "Pair";
    }

 

标签:map,2347,return,ranks,suits,力扣,int,&&,手牌
From: https://www.cnblogs.com/ayuanjiejie/p/17137749.html

相关文章

  • 力扣9-回文数
    原题链接:https://leetcode.cn/problems/palindrome-number/给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都......
  • 力扣简977 有序数组的平方
    自己写了一版空间占用太高了看了题解差不多也就这样packageLeetcode;/*给你一个按非递减顺序排序的整数数组nums,*返回每个数字的平方组成的新数组,要求也按......
  • 【LeetCode】2347. 最好的扑克手牌
    classSolution{public:stringbestHand(vector<int>&ranks,vector<char>&suits){intsameNum=0;if(count(suits.begin(),suits.end(),su......
  • [LeetCode] 2347. Best Poker Hand
    Youaregivenanintegerarray ranks andacharacterarray suits.Youhave 5 cardswherethe ith cardhasarankof ranks[i] andasuitof suits[i].......
  • 力扣---20. 有效的括号
    给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:   左括号必须用相同类型的右括号闭合。   左括号必须以正确的顺序闭合。 ......
  • 力扣---19. 删除链表的倒数第 N 个结点
    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例......
  • 力扣---2347. 最好的扑克手牌
    给你一个整数数组ranks和一个字符数组suit。你有5张扑克牌,第i张牌大小为ranks[i],花色为suits[i]。下述是从好到坏你可能持有的手牌类型:   "Flush":同花,五......
  • 力扣简278 第一个错误的版本
    因为做的是一个题库里的题这道题被划分在二分查找里面其实根本想不到该用二分查找然后直接套了一套二分查找结果可能不太对对于一些形如对搓搓和对错错错的用例会执行......
  • 力扣---17. 电话号码的字母组合
    给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。示例1:输入:d......
  • 力扣---1237. 找出给定方程的正整数解
    给你一个函数 f(x,y)和一个目标结果z,函数公式未知,请你计算方程f(x,y)==z所有可能的正整数数对x和y。满足条件的结果数对可以按任意顺序返回。尽管函数的具体......