天天看點

LeetCode 914. 卡牌分組 C++描述

LeetCode 914. 卡牌分組 C++描述

難度 簡單

給定一副牌,每張牌上都寫着一個整數。

此時,你需要標明一個數字 X,使我們可以将整副牌按下述規則分成 1 組或更多組:

每組都有 X 張牌。

組内所有的牌上都寫着相同的整數。

僅當你可選的 X >= 2 時傳回 true。

示例 1:

輸入:[1,2,3,4,4,3,2,1]

輸出:true

解釋:可行的分組是 [1,1],[2,2],[3,3],[4,4]

示例 2:

輸入:[1,1,1,2,2,2,3,3]

輸出:false

解釋:沒有滿足要求的分組。

示例 3:

輸入:[1]

輸出:false

解釋:沒有滿足要求的分組。

示例 4:

輸入:[1,1]

輸出:true

解釋:可行的分組是 [1,1]

示例 5:

提示:

class Solution {
public:
    bool hasGroupsSizeX(vector<int>& deck) {
        
        sort(deck.begin(),deck.end());
        for(int i = 2; i <= deck.size(); i++){
            //如果不能整除,則直接下一個
            if(deck.size() % i != 0)
                continue;
            bool flag = true;
            for(int j = 0; j < deck.size()/i; j++){
                for(int k = j * i; k < (j+1) * i && k < deck.size(); k++){
                    if(deck[k] != deck[j*i]){
                        //如果不和第一個數一樣,則退出
                        flag = false;
                        break;
                    }
                    if(!flag)
                        break;
                }
            }
            if(flag)
                    return true;
        }
        return false;

    }
};      

繼續閱讀