class Solution {
public:
int minSetSize(vector<int>& arr) {
vector<int> dp;
sort(arr.begin(),arr.end());
int n=arr.size()/2;
int cnt=1;
for(int i=1;i<arr.size();i++)
{ //计算每个数字出现的次数,记录在dp数组中
if(arr[i]==arr[i-1])
cnt++;
else
{
dp.push_back(cnt);
cnt=1;
}
arr[i-1]=arr[i];
}
//判断最后连续相同的数字,上面for循环没有添加到dp中
if(cnt!=1)
{
dp.push_back(cnt);
}
sort(dp.begin(),dp.end());
int tmp=0;
int sum=0;
int k=dp.size()-1;
while(sum<n && k>=0)
{
sum+=dp[k];
tmp++;
k--;
}
return tmp;
}
};
1338. 数组大小减半
最新推荐文章于 2022-07-19 14:06:33 发布