当前位置: 首页 > news >正文

C++面试题(48)------ 扑克牌中的顺子

  • 操作系统:ubuntu22.04
  • IDE:Visual Studio Code
  • 编程语言:C++11

题目描述

从扑克牌中随机抽 5 张牌,判断是不是一个顺子(即是否连续的五个点数)。
A 看作 1,J=11,Q=12,K=13,大小王可以看作任意数字(用 0 表示)。
示例:

输入: [1,2,3,4,5]    → 输出: true
输入: [0,0,1,2,5]    → 输出: true (0 可以看作 34)
输入: [3,4,5,6,7]    → 输出: true
输入: [1,2,3,4,9]    → 输出: false

解法思路:排序 + 贪心判断

🔍 核心思想:

  • 把数组排序;
  • 统计 0 的个数(代表“大小王”);
  • 从第一个非零的数开始遍历:
    • 如果有重复的数(非0),直接返回 false;
    • 计算当前数和前一个数之间的空缺,用 0 去补;
    • 如果 0 的数量不够补空缺,返回 false;
  • 否则返回 true。

实现代码


#include <algorithm>
#include <vector>using namespace std;class Solution {
public:bool isStraight( vector<int> nums){sort( nums.begin(), nums.end() );int zeroCount = 0;for ( int i = 0; i < 4; ++i ){if ( nums[ i ] == 0 ){zeroCount++;}else if ( nums[ i ] == nums[ i + 1 ] ){// 出现非0重复,不可能构成顺子return false;}}// 判断最大值和最小值的差是否小于等于4,或者用 0 填补中间空缺if ( nums[ 4 ] - nums[ zeroCount ] <= 4 )return true;elsereturn false;}
};int main()
{Solution s;vector<int> nums = { 1, 2, 3, 4, 5 };cout << std::boolalpha<< s.isStraight( nums ) << endl;nums = { 1, 2, 6, 4, 5 };cout << std::boolalpha<< s.isStraight( nums ) << endl;return 0;
}

运行结果

true
false
http://www.lqws.cn/news/507295.html

相关文章:

  • android脱糖
  • Uipath Outlook COM 接口错误
  • Mcp-git-ingest Quickstart
  • vftp centos 离线部署
  • IAR平台全面升级,提升瑞萨MCU架构的嵌入式软件开发效率
  • 软件测试的分类有哪些?(如黑盒/白盒/灰盒测试)
  • Day05_Linux项目怎么打包成exe
  • ArkUI-X通过Stage模型开发Android端应用指南(二)
  • Drag-and-Drop LLMs: Zero-Shot Prompt-to-Weights
  • 华为云Flexus+DeepSeek征文|华为云ModelArts Studio:利用New API实现大模型网关与AI资产管理的无缝对接
  • Revisiting Image Deblurring with an Efficient ConvNet论文阅读
  • 五种 IO 模式的简单介绍 -- 阻塞 IO,非阻塞 IO,信号驱动 IO,IO 多路复用,异步 IO
  • 2025.6.16-实习
  • 网络安全攻防:2025年新型钓鱼攻击防御指南
  • JVM(12)——详解G1垃圾回收器
  • 使用预训练权重在YOLO模型上训练新数据集的完整指南
  • 深入理解RAG:大语言模型时代的知识增强架构
  • 解析云计算虚拟化基石:KVM、QEMU与Libvirt的协同
  • SpringBoot - 整合 Redis 实现数据分布式缓存
  • 通过环境变量管理多版本JDK8、11、17并安装idea编译器
  • 攻防世界-MISC-MeowMeowMeow
  • BRAIN LANG:新发现!大脑网络重新调整以补偿在嘈杂环境中的听力困难
  • 【MV】编排4:基于时间线数据的密度突变检测和密度平滑算法
  • Springboot项目中使用手机号短信验证码注册登录实现
  • wpf单文件打包还有 一些dll打包不进去?
  • JS核心操作符:从基础到ES6+
  • phpstudy apache伪静态.htaccess文件置空丢失问题解决
  • iostat中的util原理
  • 从iOS到Flutter:我的转型之路与技术成长启示
  • matplotilb实现对MACD的实战