就不是很懂题目的意思,顺子是啥,遂去看题解
1.题目
2.分析
根据题意,此 5张牌是顺子的 充分条件 如下:
除大小王外,所有牌无重复 ; 设此 5张牌中最大的牌为max ,最小的牌为min (大小王除外),则需满足: max−min<5
遇到大小王(0)跳过, 用set判重, 借助辅助变量max,min。
3.代码
class Solution {
public boolean isStraight(int[] nums
) {
HashSet
<Integer> set
=new HashSet<>();
int max
=-1,min
=14;
for(int i
=0;i
<nums
.length
;i
++){
if(nums
[i
]==0){
continue;
}
if(set
.contains((Integer
)nums
[i
])){
return false;
}
set
.add(nums
[i
]);
if(nums
[i
]>max
){
max
=nums
[i
];
}
if(nums
[i
]<min
){
min
=nums
[i
];
}
}
if((max
-min
)>=5){
return false;
}
return true;
}
}
4.复杂度
时间复杂度 O(N) = O(5) = O(1) : 其中 N 为 nums 长度,本题中 N≡5 ;遍历数组使用 O(N) 时间。 空间复杂度 O(N) = O(5) = O(1): 用于判重的辅助 Set 使用 O(N) 额外空间。
5.结果