從撲克牌中隨機抽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
思路:
根據題意,此 55 張牌是順子的 充分條件 如下:
除大小王外,所有牌 無重復 ;
設此 55 張牌中最大的牌為 maxmax ,最小的牌為 minmin (大小王除外),則需滿足:
max - min < 5
max−min<5
因而,可將問題轉化為:此 55 張牌是否滿足以上兩個條件?
class Solution { public: bool isStraight(vector<int>& nums) { sort(nums.begin(),nums.end()); for(int i=0;i<4;i++) if(nums[i]==nums[i+1]&&nums[i]!=0) return false; int max=nums[4]; int min; for(int i=0;i<5;i++) if(nums[i]!=0) {min=nums[i];break;} return max-min<5; } };