LeetCode 每日一题2347. 最好的扑克手牌

简介: 给你一个整数数组 ranks 和一个字符数组 suit 。你有 5 张扑克牌,第 i 张牌大小

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。


🌈个人主页:主页链接


🌈算法专栏:专栏链接


    我会一直往里填充内容哒!


🌈LeetCode专栏:专栏链接


目前在刷初级算法的LeetBook 。若每日一题当中有力所能及的题目,也会当天做完发出


🌈代码仓库:Gitee链接


🌈点击关注=收获更多优质内容🌈



这道题非常的简单 仅分析出返回的优先级就可AC


轮到我了《没营养》(doge 困难题我畏畏缩缩,简单题我重拳出击


题目:


给你一个整数数组 ranks 和一个字符数组 suit 。你有 5 张扑克牌,第 i 张牌大小为 ranks[i] ,花色为 suits[i] 。


下述是从好到坏你可能持有的 手牌类型 :


1."Flush":同花,五张相同花色的扑克牌。

2."Three of a Kind":三条,有 3 张大小相同的扑克牌。

3."Pair":对子,两张大小一样的扑克牌。

4."High Card":高牌,五张大小互不相同的扑克牌。


请你返回一个字符串,表示给定的 5 张牌中,你能组成的 最好手牌类型


注意:返回的字符串 大小写 需与题目描述相同。


输入:ranks = [13,2,3,1,9], suits = ["a","a","a","a","a"]
输出:"Flush"
解释:5 张扑克牌的花色相同,所以返回 "Flush" 。
输入: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" 手牌类型。
输入: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'
  • 任意两张扑克牌不会同时有相同的大小和花色。


白话讲解:


给出五张手牌的手牌,分析这五张手牌的属性,返回的优先级分别为:五张牌花色相同->三张大小相同的手牌->两张大小相同的手牌->五张大小都不相同的手牌。

d2355986531d4bbb904917d8b6996e54.jpg


题解:


分析题干类型,根据其划分属性我们很容易就能想到用一个东西来记录各种手牌属性出现的次数。


这里根据其数据类型的大小开辟了数组,官解使用hash表


但因为我觉得数组更能体现这个过程(绝对不是因为我不会! 好吧就是因为还没看到stl,不想懂个用法就上场


加上题给的数据大小都很小,所以两种方式速度上大差不差。


当然如果数据范围很大,是要用离散化的思想(也就是哈希的原理来开辟数组 或者直接使用stl里的hash,否则会造成很严重的空间浪费。


创建两个数组来记录其大小与花色两种属性


首先先遍历花色的suits,因为他优先级最高,若出现一个花色出现五次,则直接返回。


之后遍历手牌大小,这里有一个优化的地方:


若一张手牌大小出现了两次,其已经满足了一种返回条件,但出现三次的优先级更高,此时我们可以记录下是否出现了两次,若之后没有出现三次可以直接返回两次的情况,不需要对数组在进行一次遍历寻找两次的情况。

之后只需要判断是否出现了两次,若无直接返回最差的情况,反之。

9a2536e780df47ca8ca70d03b38c4a0f.png

 

代码实现:


 class Solution {
public:
    string bestHand(vector<int>& ranks, vector<char>& suits) {
        int rank[14]={0},suit[4]={0};
        int flag=0;
        for(auto c:suits)
        {
            suit[c-'a']++;
            if(suit[c-'a']==5)return "Flush";
        }
        for(auto c:ranks)
        {
            rank[c]++;
            if(rank[c]==3)return "Three of a Kind";
            if(rank[c]==2)flag=1;
        }
        return flag==1?"Pair":"High Card";
    }
};


完结撒花:


🌈本篇博客的内容【LeetCode 每日一题2347. 最好的扑克手牌】已经结束。

🌈若对你有些许帮助,可以点赞、关注、评论支持下博主,你的支持将是我前进路上最大的动力。


🌈若以上内容有任何问题,欢迎在评论区指出。若对以上内容有任何不解,都可私信评论询问。


🌈诸君,山顶见。

目录
相关文章
|
设计模式 编解码 前端开发
打造卓越 QML 层级设计:从入门到精通(三)
打造卓越 QML 层级设计:从入门到精通(三)
1717 0
|
2月前
|
Kubernetes Java 微服务
Spring Cloud 微服务架构技术解析与实践指南
本文档全面介绍 Spring Cloud 微服务架构的核心组件、设计理念和实现方案。作为构建分布式系统的综合工具箱,Spring Cloud 为微服务架构提供了服务发现、配置管理、负载均衡、熔断器等关键功能的标准化实现。本文将深入探讨其核心组件的工作原理、集成方式以及在实际项目中的最佳实践,帮助开发者构建高可用、可扩展的分布式系统。
319 0
ly~
|
域名解析 网络协议 Linux
如何测试 DNS 记录中的反向代理服务器是否生效?
本文介绍了三种测试反向代理服务器配置的方法。首先,通过命令行工具如 `ping`、`nslookup` 和 `dig` 检查域名解析是否指向正确的 IP 地址。其次,利用 Web 浏览器访问域名,验证页面加载正常且请求头信息无误。最后,借助网络抓包工具如 `Wireshark` 和 `tcpdump` 分析数据包,确保请求正确转发并返回预期响应。
ly~
1018 2
ly~
|
传感器 存储 供应链
大数据在供应链管理中的具体应用案例
以下是大数据在供应链管理中的具体应用案例:沃尔玛通过整合内外部数据进行需求预测,提前调配应急物资;亚马逊利用大数据优化库存管理,提高周转率并降低成本;DHL通过传感器收集数据优化物流路线,提升运输效率。大数据的优势在于提高需求预测准确性、优化库存管理、提升物流效率、增强供应商管理和提高供应链可视性,从而实现全方位的供应链优化。
ly~
3013 2
|
机器学习/深度学习 并行计算 PyTorch
PyTorch与CUDA:加速深度学习模型训练的最佳实践
【8月更文第27天】随着深度学习应用的广泛普及,高效利用GPU硬件成为提升模型训练速度的关键。PyTorch 是一个强大的深度学习框架,它支持动态计算图,易于使用且高度灵活。CUDA (Compute Unified Device Architecture) 则是 NVIDIA 开发的一种并行计算平台和编程模型,允许开发者直接访问 GPU 的并行计算能力。本文将详细介绍如何利用 PyTorch 与 CUDA 的集成来加速深度学习模型的训练过程,并提供具体的代码示例。
1429 3
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL8 中文参考(二十八)(5)
MySQL8 中文参考(二十八)
207 1
|
安全 网络安全 数据安全/隐私保护
代理IP地址真的安全吗?
代理IP在隐藏用户真实IP、保护隐私方面有一定效果,但并非完全安全。代理服务器可能被黑客攻击,导致数据泄露,且不能保证匿名性。使用代理涉及法律与道德问题,需选信誉良好的服务商。用户应谨慎并采取安全措施。
|
JavaScript iOS开发 开发者
pnpm的安装与配置(Windows/macOS)
pnpm的安装与配置(Windows/macOS)
3462 0
|
存储 Ubuntu 安全
经典Ubuntu20.04版本U盘安装双系统教程
Ubuntu 建立在Debian的架构和基础架构之上,包括 Linux 服务器、桌面、物联以及云操作系统版本。最近项目需求换成linux的,入手ubuntu桌面比较简洁美观并且作为生产系统生态良好,开始了着手查找安装Ubuntu双系统的方法和视频,安装有两种:
1485 0
经典Ubuntu20.04版本U盘安装双系统教程
|
缓存
可靠数据传输(Rdt)的原理
可靠数据传输(Rdt)的原理
761 0