JAVA练习110-扑克牌中的顺子
从若干副扑克牌中随机抽 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:排序
因为五张牌是连续的且只相差 1,不考虑大小王的情况下,最大牌和最小牌的差一定为 4,因为大小王也可以替补最大牌或最小牌,所以有大小王时,最大牌与最小牌的差一定小于等于4,即小于 5。因此我们可以对数组进行排序,记录最大值和最小值,0 跳过,然后判断两值之差是否小于 5 即可。注意:有重复的牌(除大小王)不算顺子。
时间复杂度:O(n*log n) n 等于 5 空间复杂度:O(n)
class Solution {
public boolean isStraight(int[] nums) {
/
共有 0 条评论