当前位置: 首页 > 工具软件 > deck-of-cards > 使用案例 >

leetcode-914. X of a Kind in a Deck of Cards

淳于烈
2023-12-01

In a deck of cards, each card has an integer written on it.

Return true if and only if you can choose X >= 2 such that it is possible to split the entire deck into 1 or more groups of cards, where:

Each group has exactly X cards.
All the cards in each group have the same integer.

Example 1:

Input: deck = [1,2,3,4,4,3,2,1]
Output: true
Explanation: Possible partition [1,1],[2,2],[3,3],[4,4].

Example 2:

Input: deck = [1,1,1,2,2,2,3,3]
Output: false´
Explanation: No possible partition.

Example 3:

Input: deck = [1]
Output: false
Explanation: No possible partition.

Example 4:

Input: deck = [1,1]
Output: true
Explanation: Possible partition [1,1].

Example 5:

Input: deck = [1,1,2,2,2,2]
Output: true
Explanation: Possible partition [1,1],[2,2],[2,2].

Constraints:

1 <= deck.length <= 10^4
0 <= deck[i] < 10^4

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/x-of-a-kind-in-a-deck-of-cards
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

int cmpfunc (const void * a, const void * b)
{
   return ( *(int*)a - *(int*)b );
}

bool hasGroupsSizeX(int* deck, int deckSize){
    bool res=false;
    int i, X, num;

    if(deckSize == 1)
        return false;

    qsort(deck, deckSize, sizeof(int), cmpfunc); 
    for(X=1; X<deckSize; X++){
        if(deckSize%X==0){
            num = deckSize/X; 
            for(i=0; i<deckSize; i+=num){
                if(deck[i]==deck[i+num-1]){ 
                    res = true;
                }else{
                    res = false;
                    break;
                }
            }
            if(res)
                return res;
        }
    }
    
    return res;
}

作者:voyagerhui
链接:https://leetcode-cn.com/problems/x-of-a-kind-in-a-deck-of-cards/solution/cyu-yan-guan-fang-ti-jie-bao-li-fang-fa-by-voyager/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 类似资料: