当前位置:网站首页>代码随想录笔记_哈希_61扑克牌中的顺子
代码随想录笔记_哈希_61扑克牌中的顺子
2022-08-02 15:36:00 【Erik_Won】
代码随想录笔记_哈希表
代码随想录二刷笔记记录
LC 剑指offer61. 扑克牌中的顺子
题目
本题为补充题
从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。
示例 1:
输入: [1,2,3,4,5]
输出: True
示例 2:
输入: [0,0,1,2,5]
输出: True
限制:
数组长度为 5
数组的数取值为 [0, 13] .
思路分析
题意分析:题目中给出了几种条件
条件1:五张牌必须是升序
条件2:不可重复 , 重复也就相当于打破了条件1 -> 去重
重复举例: [0,0,2,2,5]
条件3:大小鬼为0,则 0 可以不遵守条件1,2
思路分析
根据条件2,易想数据结构 Set , Set可以为我们实现去重的逻辑,一旦发现重复的牌,返回 false 即可。
根据条件3:当遍历数组,遍历到 0 时,我们可以直接跳过 0 进行处理。
根据条件1:由扑克牌的顺子,以及限制数组长度为5,启发,符合顺子规则的最大牌 - 最小牌,必然小于 5
例:[0,0,1,2,5] -> 5 - 1 = 4
代码实现
完整代码实现
public boolean isStraight(int[] nums) {
int max = 0;
int min = 14;
Set<Integer> set = new HashSet<>();
for (int num : nums) {
if (0 == num) continue; //跳过大小王
if (set.contains(num)) return false;
set.add(num);
max = Math.max(num,max);//更新最大牌变量
min = Math.min(num,min);//更新最小牌变量
}
return max - min <= 4;
}
边栏推荐
猜你喜欢
随机推荐
Anti-shake throttling (continue to update later)
基于深度学习的机器人目标识别和跟踪
Why do I no longer recommend the enumeration strategy pattern?
Mysql 查询语句中where字段= '' 作用是什么 ?如何实现多条件查询
MySQL-4-常规概念
禅道16.5升级17.3
Eight big software attack overview of supply chain
SIGIR'22 推荐系统论文之序列推荐(短文)篇
(LinkedList与链表) 和 (ArrayList与顺序表)的区别
“如何写好一篇学术论文?”这大概是最详实的一则攻略了!
从特征交互到数据交互,浅谈深度点击率模型的新趋势
助力疫情防控,30行代码就能搞定无服务器实时健康码识别!
【[USACO06NOV]Corn Fields G】【状压DP】
数仓:金融级数仓架构转型的最佳实践(下篇)
类的比较大小(Comparable -> compareTo(类自己实现接口),Comparator -> compare(新建一个类作为比较器))
JZ9 用两个栈实现队列
How to use PHP to implement lexical analyzer and custom language
2.5 - 死锁
A tour of gRPC:06 - gRPC client straming 客户端流
系统存储的基本管理--挂载,分区,用户配额

![【[SCOI2005] 互不侵犯】【状压DP(含概念讲解)】](/img/93/667e81afeb99b1cce4eb8068e6ce14.png)







