C ++中的纸牌中的X
假设我们有一副纸牌,每张纸牌上都有一个整数。我们必须检查是否可以选择X>=2,以便可以将整个卡片组分成1个或更多组卡片,其中满足以下条件:每个组的卡片数正好为X。每个组中的所有卡均具有相同的编号。
因此,如果输入就像deck=[1,2,3,4,4,3,2,1],那么输出将为True,可能的分区为[1,1],[2,2],[3,3],[4,4]。
为了解决这个问题,我们将遵循以下步骤-
定义一张映射mp
对于甲板上的所有x
(将mp[x]增加1)
对于mp中的所有键值对x
ans:=的gcd(ans和x的值)
当ans>1时返回true,否则返回false
让我们看下面的实现以更好地理解-
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool hasGroupsSizeX(vector<int>& deck) {
unordered_map<int, int> mp;
int ans;
for (auto x : deck)
mp[x]++;
for (auto x : mp)
ans = __gcd(ans, x.second);
return (ans > 1);
}
};
main(){
Solution ob;
vector<int> v = {1,2,3,4,4,3,2,1};
cout << (ob.hasGroupsSizeX(v));
}输入值
{1,2,3,4,4,3,2,1}输出结果
1
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语