当前位置:网站首页>[LeetCode]剑指 Offer 61. 扑克牌中的顺子
[LeetCode]剑指 Offer 61. 扑克牌中的顺子
2022-07-23 01:06:00 【Spring-_-Bear】
从若干副扑克牌中随机抽 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
题解一:
/** * 剑指 Offer 61. 扑克牌中的顺子 */
public boolean isStraight(int[] nums) {
/* * 5 张牌要组成顺子,则最多只能出现重复的两个 0,其余数字不可能重复,重复时直接返回 false * 由于 0 可以当作任意点数的牌,所以分情况讨论以理清思路: * 1. 零个 0:组成顺子时最大点数 - 最小点数 === 4 * 2. 一个 0:如 0,5,7,8,9,由于 0 可以当作 6,则最大点数(9) - 最小点数(5) = 4 * 3. 两个 0:如 0,0,6,7,8,由于 0 可以当作 4,5 或 9,10,此时最大点数(8) - 最小点数(6) = 2 * 总结:当牌的最大点数 - 最小点数 <= 4 时即可组成顺子 */
Set<Integer> set = new HashSet<>();
int max = 0;
int min = 14;
for (int num : nums) {
// 如果是 0 则继续遍历,寻找最大点数和最小点数
if (0 == num) {
continue;
}
// 判断当前元素是否重复,重复则直接返回 false
if (!set.add(num)) {
return false;
}
max = Math.max(max, num);
min = Math.min(min, num);
}
return max - min <= 4;
}

题解二:
/** * 剑指 Offer 61. 扑克牌中的顺子 */
public boolean isStraight(int[] nums) {
/* * 先对数组进行排序,遍历数组的过程中统计大小王的个数, * 并判断除 0 外是否存在重复的点数,存在则直接返回 false * 注:数组排序完成之后,最大点数一定是 nums[4],最小点数一定是 nums[大小王数量] * 1. 不存在大小王的情况下最小点数一定是 nums[0],如 1,2,3,4,5 * 2. 存在一个大小王情况下最小点数一定是 nums[1],如 0,1,2,4,5(因为 0 可以充当任何点数,那么一定充当比当前数组中最小点数还要大的数) * 3. 存在两个大小王情况下最小点数一定是 nums[2],如 0,0,2,4,5(因为 0 可以充当任何点数,那么一定充当比当前数组中最小点数还要大的数) */
Arrays.sort(nums);
int joker = 0;
for (int i = 0; i < 4; i++) {
// 统计大小王的数量
if (nums[i] == 0) {
joker++;
}
// 存在重复点数
else if (nums[i + 1] == nums[i]) {
return false;
}
}
// 最大点数与最小点数之差小于等于 4 则是顺子
return nums[4] - nums[joker] <= 4;
}
限制:
- 数组长度为 5
- 数组的数取值为 [0, 13] .
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof
边栏推荐
- 砥砺前行新征程,城链科技狂欢庆典在厦门隆重举行
- Software testing interview ideas, skills and methods to share, learn is to earn
- 数学建模——插值拟合
- 股票开户网上开户安全吗,银河证券怎么样
- [cloud native] in the era of storm and cloud, the sharp edge of DBAs is out of the sheath
- 为什么使用Well-Architected Framework?
- AirServer第三方投屏软件v7.3.0中文版 (Airplay终端实用工具)
- 35岁程序员,早到的中年危机
- RNA 25. What should we do if there is only Shengxin but no experiment in SCI articles?
- 购买股票开户安全吗,会亏钱吗?
猜你喜欢

读书笔记:程序员的自我修养---第三章

Compose与RecyclerView结合效果会是怎样的?

35岁程序员,早到的中年危机
How many points can you get on the latest UnionPay written test for test engineers?

解析创客教育活动所需的空间实践场

【华为联机对战服务】客户端退出重连或中途进入游戏,新玩家如何补帧?

Internet Download Manager简直就是下载器中的大杀器

基于共轭梯度法的对抗攻击
银联最新测试工程师笔试题目,你能得多少分?

NodeJS 基于 Dapr 构建云原生微服务应用,从 0 到 1 快速上手指南
随机推荐
解析steam与创客教育课堂的统筹规划
详解Vector
JMeter --- JMeter installation tutorial
C language classic exercise (1) - "daffodil number"“
Summary of some open source libraries that drive MCU hardware debugger (including stlink debugger)
Unity3D学习笔记9——加载纹理
程序员不会 jvm?骨灰级工程师:全等着被淘汰吧!这是必会技能!
【C语言】文件操作
正则表达式转换为相应的文字小工具
C语言经典练习题(1)——“水仙花数“
VS2022中出现const char* 无法赋值 char*
在通达信开户安全不
一个月学透阿里整理的分布式架构笔记
SPSS Chi-Square
Advantages of BGP machine room
【FPGA教程案例36】通信案例6——基于vivado核的FFT傅里叶变换开发以及verilog输入时序配置详解,通过matlab进行辅助验证
Mathematical modeling interpolation fitting
涨薪神器
Amplitude limiting and deblocking filtering of botu PLC signal processing series
【FPGA教程案例37】通信案例7——基于FPGA的FFT,IFFT傅里叶变换和逆变换