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 官宣新年祝福语简短