当前位置:网站首页>[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
边栏推荐
- 35岁程序员,早到的中年危机
- Stream操作之 先分组再取最大值
- 【并发编程】第二章:从核心源码深入ReentrantLock锁
- Online matting and background changing and erasing tools
- SQL用户表的通用设计
- How many of the 50 classic computer network interview questions can you answer? (top)
- setup中的props和context
- 【Try to Hack】AWVS安装和简单使用
- Number theory -- division and blocking, common classic examples.
- 视频点播中相关分辨率说明
猜你喜欢

PMP备考心得 | 好的习惯、好的过程、好的结果

模板学堂丨JumpServer安全运维审计大屏
![[C language] file operation](/img/d3/5e5ce369dd3315089b529cf69b36c0.png)
[C language] file operation

Vs Code shortcut key settings

详解Vector

数学建模——图与网络模型及方法(二)

Regular expression conversion to corresponding text gadget

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

Advantages of server hosting, server leasing and virtual machine

What is the combined effect of compose and recyclerview?
随机推荐
Is it safe to open an account online? How about Galaxy Securities
It is not safe to open an account in tongdaxin
C语言经典练习题(1)——“水仙花数“
-Bash: wget: command not found
BGP機房的優點
【并发编程】第二章:从核心源码深入ReentrantLock锁
【CANN训练营】学习笔记——Diffusion和GAN对比,Dalle2和Parti
Talk about HART Protocol
FasterRCNN示例代码测试1:令anchor_generator = None
Internet download manager is simply a killer of downloaders
Software testing interview ideas, skills and methods to share, learn is to earn
博途PLC信号处理系列之限幅消抖滤波
如何高效系统学习 MySQL?
2000. reverse word prefix
超全PMP备考文档汇总
Group before getting the maximum value in stream operation
软件测试面试思路技巧和方法分享,学到就是赚到
Regular expression conversion to corresponding text gadget
2000. 反转单词前缀
LiveQing直播点播流媒体OBS推流直播如何获得接口校验token视频校验streamToken及配置token有效期