撲克牌中的順子


從撲克牌中隨機抽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;
    }
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM