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

力扣---2347. 最好的扑克手牌

时间:2023-02-20 10:34:22浏览次数:36  
标签:2347 return ranks max Kind suits --- Three 手牌

给你一个整数数组 ranks 和一个字符数组 suit 。你有 5 张扑克牌,第 i 张牌大小为 ranks[i] ,花色为 suits[i] 。
下述是从好到坏你可能持有的 手牌类型 :
    "Flush":同花,五张相同花色的扑克牌。
    "Three of a Kind":三条,有 3 张大小相同的扑克牌。
    "Pair":对子,两张大小一样的扑克牌。
    "High Card":高牌,五张大小互不相同的扑克牌。
请你返回一个字符串,表示给定的 5 张牌中,你能组成的 最好手牌类型 。
注意:返回的字符串 大小写 需与题目描述相同。

示例 1:
输入:ranks = [13,2,3,1,9], suits = ["a","a","a","a","a"]
输出:"Flush"
解释:5 张扑克牌的花色相同,所以返回 "Flush" 。

示例 2:
输入:ranks = [4,4,2,4,4], suits = ["d","a","a","b","c"]
输出:"Three of a Kind"
解释:第一、二和四张牌组成三张相同大小的扑克牌,所以得到 "Three of a Kind" 。
注意我们也可以得到 "Pair" ,但是 "Three of a Kind" 是更好的手牌类型。
有其他的 3 张牌也可以组成 "Three of a Kind" 手牌类型。

示例 3:
输入:ranks = [10,10,2,12,9], suits = ["a","b","c","a","d"]
输出:"Pair"
解释:第一和第二张牌大小相同,所以得到 "Pair" 。
我们无法得到 "Flush" 或者 "Three of a Kind" 。

提示:
    ranks.length == suits.length == 5
    1 <= ranks[i] <= 13
    'a' <= suits[i] <= 'd'
    任意两张扑克牌不会同时有相同的大小和花色。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/best-poker-hand
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


 

由于需要计数,可以有两种简单的方法:排序和哈希表。

由于数据量很小,所以哈希表反倒会比排序更差。

先用一次排序:

class Solution {
    public String bestHand(int[] ranks, char[] suits) {
        for (int i = 0; i < suits.length; i ++) {
            if (i > 0 && suits[i] != suits[i - 1]) {
                break;
            }
            if (i == 4) {
                return "Flush";
            }
        }
        int max = 1;
        int count = 1;
        Arrays.sort(ranks);
        for (int i = 0; i < ranks.length; i ++) {
            if (i > 0 && ranks[i] == ranks[i - 1]) {
                count ++;
            } else {
                max = Math.max(max, count);
                count = 1;
            }
        }
        max = Math.max(max, count);
        if (max == 1) {
            return "High Card";
        } else if (max == 2) {
            return "Pair";
        } else {
            return "Three of a Kind";
        }
    }
}

 

 

接下来是哈希表:

这里直接放一个官解了

class Solution {
    public String bestHand(int[] ranks, char[] suits) {
        Set<Character> suitsSet = new HashSet<Character>();
        for (char suit : suits) {
            suitsSet.add(suit);
        }
        if (suitsSet.size() == 1) {
            return "Flush";
        }
        Map<Integer, Integer> h = new HashMap<Integer, Integer>();
        for (int rank : ranks) {
            h.put(rank, h.getOrDefault(rank, 0) + 1);
        }
        if (h.size() == 5) {
            return "High Card";
        }
        for (Map.Entry<Integer, Integer> entry : h.entrySet()) {
            if (entry.getValue() > 2) {
                return "Three of a Kind";
            }
        }
        return "Pair";
    }
}

 

标签:2347,return,ranks,max,Kind,suits,---,Three,手牌
From: https://www.cnblogs.com/allWu/p/17136486.html

相关文章

  • 50行代码完成微信小程序-跳一跳辅助工具,让你成为朋友圈最靓的仔
    前言2017年12月28日,微信更新的6.6.1版本开放了小游戏,微信启动页面还重点推荐了小游戏「跳一跳」。不说废话直接上代码设置公共参数 doubleratio=1; //弹跳系数......
  • HODJ1197 Specialized Four-Digit Numbers
    SpecializedFour-DigitNumbersTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):7715    Accepted......
  • 使用PyTorch-LSTM进行单变量时间序列预测的示例教程
    时间序列是指在一段时间内发生的任何可量化的度量或事件。尽管这听起来微不足道,但几乎任何东西都可以被认为是时间序列。一个月里你每小时的平均心率,一年里一只股票的日收......
  • flex中align-content是干嘛的
    只适用多行的flex容器(子项不止一行时该属性才有效果),它的作用是当flex容器在交叉轴上有多余的空间时,将子项作为一个整体(属性值为:flex-start、flex-end、center时)进行对齐。......
  • tryhackme-Daily Bugle
    靶场链接:https://tryhackme.com/room/dailybugle枚举端口nmap-sV-p--vvip直接访问网址,就可以知道第一题是什么了通过dirsearch搜索,可以看到README.txt,得知是Joo......
  • 错题集:造价管理-2-1-建筑法及相关条例
    Temple错题原因Content错题原因错题原因错题原因错题原因:工伤保险是法律规定,意外伤害是鼓励错题原因:设计单位应该也不能......
  • Xilinx-英文缩写
     HPI/O:High-PerformanceI/O, HP接口为高速接口,用于存储器或者芯片与芯片之间的接口。HRI/O:High-RangeI/O,HR可以接受很宽的电平标准。AMBA: AdvancedMicro......
  • 文盘Rust -- 本地库引发的依赖冲突
    作者:京东科技贾世闻问题描述clickhouse的原生rust客户端目前比较好的有两个clickhouse-rs和clickhouse.rs。clickhouse-rs是tcp连接;clickhouse.rs是http连......
  • 说透中台 ---- 系列文章
    【005】说透中台 说透中台(答疑篇)--学习笔记说透中台(落地篇三)--学习笔记说透中台(落地篇二)--学习笔记说透中台(落地篇一)--学习笔记说透中台(概念篇)--学......
  • 嵌入式开发之优化---代码优化
    1.牢记Ahmdal定律funccost表示是函数func的运行时间百分比,funcspeedup是你优化后函数的运行系数;所以,如果函数TriangleIntersect......