撲克牌中的順子

一、問題描述

從撲克牌中隨機抽 5 張牌,判斷是不是順子,即這 5 張牌是不是連續的。 2-10 爲數字本身,A 爲 1,J 爲 11,Q 爲 12,K 爲 13,而大小王可以看成任意的 數字。(大小王最多4張)

二、解題思路

1、首先我們應該關注的是大小王等特殊字符,由於可以當成任意的數字,所有當成0處理。
2、把數組排序,再統計數組中0的個數
3、統計排序之後的數組中相鄰數字之間的空缺總數。
4、數組中的非0數字重複出現,則該數組是不連續的。
5、如果空缺的總數小於或者等於0的個數,那麼這個數組就是連續的,反之則不連續

三、代碼實現

class Solution
{
public:
    bool IsContinuous( vector<int> numbers )
    {
        if(numbers.empty()) return false;
        int zero = 0;
        int interval = 0;
       
        sort(numbers.begin(), numbers.end()); //排序
        for(int i = 0; i<numbers.size()-1; i++) 
        //注意範圍,因爲後面需要計算a[i+1]
        {
            //統計大小王數量
            if(numbers[i] == 0)
            {
                num++;
                continue; //繼續循環
            }
            //如果存在對子,直接返回
            if(numbers[i] == numbers[i+1])
                return false;
           
            //統計間隔數量
            interval += numbers[i+1] - numbers[i] - 1;
        }
        if(zero >= interval) return true;
        else return false;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章