題目描述
從撲克牌中隨機抽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、這道題考慮最大最小值其實不太方便,因爲有了大小王的存在,最大最小的差不一定就小於5
2、可以考慮排序後兩兩比較,如果是大小王,就記錄大小王的個數,如果後面一個比前面一個大於1,那麼說明需要大小王去填
3、最後判斷大小王的個數夠不夠填
class Solution {
public boolean isStraight(int[] nums) {
Arrays.sort(nums);
int joker = 0;
int needJoker = 0;
for(int i = 0;i < nums.length-1;i++){
if(nums[i] == 0){
joker++;
continue;
}else if(nums[i] == nums[i+1]){
return false;
}else {
needJoker += nums[i+1] - nums[i] - 1;
}
}
return joker >= needJoker;
}
}