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

剑指offer63_扑克牌的顺子

扑克牌的顺子


从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。

2∼10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,大小王可以看做任意数字。

为了方便,大小王均以 0 来表示,并且假设这副牌中大小王均有两张。

注意,有可能手里没有拿任何牌。

样例1
输入:[8,9,10,11,12]输出:true
样例2
输入:[0,8,9,11,12]输出:true

算法思路

算法步骤如下:

  1. 首先检查输入是否为空,如果是则直接返回false
  2. 对数组进行排序,这样可以把所有的0(大小王)放在前面
  3. 统计0的个数k
  4. 检查非零部分是否有重复数字,如果有则不能组成顺子
  5. 检查最大的非零数字与最小的非零数字之差是否≤4(因为有k个0可以填补空缺)
  • 时间复杂度:O(nlogn),主要来自排序操作
  • 空间复杂度:O(1),只使用了常数个额外变量
class Solution {
public:bool isContinuous(vector<int> nums) {// 处理空输入情况if(nums.empty()) return false;// 排序数组,0会被排在最前面sort(nums.begin(), nums.end());// 统计0的个数int k = 0;while(k < nums.size() && !nums[k]) k++;// 检查非零部分是否有重复for(int i = k + 1; i < nums.size(); i++) {if(nums[i] == nums[i - 1]) {return false;}}// 检查最大值和最小值的差是否≤4// 因为有k个0可以填补空缺,所以只要nums.back()-nums[k]≤4就能组成顺子return nums.back() - nums[k] <= 4;}
};

实例演示

样例1: 有效顺子
输入: [1,2,3,4,5]

  1. 排序后: [1,2,3,4,5]
  2. k=0 (没有0)
  3. 没有重复数字
  4. 5-1=4 ≤4 → 返回true

样例2: 有大小王的顺子
输入: [0,0,1,2,5]

  1. 排序后: [0,0,1,2,5]
  2. k=2 (两个0)
  3. 没有重复数字
  4. 5-1=4 ≤4 → 返回true (两个0可以当作3和4)

样例3: 有重复数字
输入: [0,1,2,2,4]

  1. 排序后: [0,1,2,2,4]
  2. k=1 (一个0)
  3. 发现重复数字2 → 返回false

样例4: 差值过大
输入: [0,1,2,3,6]

  1. 排序后: [0,1,2,3,6]
  2. k=1 (一个0)
  3. 没有重复数字
  4. 6-1=5 >4 → 返回false
http://www.dtcms.com/a/283330.html

相关文章:

  • 如何加快golang编译速度
  • Cursor区域限制问题解决方案:AI模型访问技术突破与环境隔离实践
  • 如何在硬件中进行有效地调试
  • SIMATIC HMIWinCC UnifiedPerformance Insight - 使用 KPI 优化流程
  • 冰岛人(map)
  • Java破解零工市场“真需求”
  • Day04_C语言网络编程20250716
  • 认识ETL流程:数据工程的基石
  • 暑期自学嵌入式——Day04(C语言阶段)
  • 深度学习中的注意力机制:原理、应用与实践
  • 【Linux】如何使用nano创建并编辑一个文件
  • 暑期算法训练.2
  • PHP8.5.0 Alpha 1 正式发布!
  • 1_需求规格编写提示词_AI编程专用简化版
  • 华为OD机试_2025 B卷_完美走位(Python,100分)(附详细解题思路)
  • mongodb操作巨鹿
  • 9.IEnumerable可枚举接口 C#例子 WPF例子
  • NE综合企业网络实验:从VLAN到OSPF全配置
  • MEF 在 WPF 中的简单应用
  • sky-take-out项目中的切点
  • 工控机内Docker容器间Socket通信实现
  • 继电器驱动电路注意的坑
  • AI产品经理面试宝典第30天:AI+教育个性化学习与知识图谱相关面试题的解答指导
  • 解锁支付宝小程序日活增长密码
  • 使用YOLOv11实现水果类别检测:从数据到模型训练的全过程
  • 【IDEA】格式化代码工具配置
  • 【语音技术】影视技能实现方法详细介绍
  • 基于拓扑图的故障定位系统:现代网络与电网的守护者
  • 31.Python 中初始化列表的几种方式
  • JS的防抖与节流