饿了么笔试0822 第二题题解
##饿了么笔试###笔试#
#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
int a[N],n,cnt[N],idx,ans;
int main() {
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i],cnt[a[i]]++,idx = max(idx,a[i]);
for(int i=1;i<idx;i++) if(cnt[i]%2) ans++;
ans = ans/2+ans%2,cout<<ans;
}
其实用桶计数,计算出每种数出现的个数
那么出现了偶数次的是不用操作的,然后计算除了最大值以外有几种数出现了奇数次
比如说有:3个1,5个2
那么把其中的1变成2就能同时让两个出现奇数次的数变成偶数次,最后再把剩下的那个数变成最大值就行
#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
int a[N],n,cnt[N],idx,ans;
int main() {
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i],cnt[a[i]]++,idx = max(idx,a[i]);
for(int i=1;i<idx;i++) if(cnt[i]%2) ans++;
ans = ans/2+ans%2,cout<<ans;
}
其实用桶计数,计算出每种数出现的个数
那么出现了偶数次的是不用操作的,然后计算除了最大值以外有几种数出现了奇数次
比如说有:3个1,5个2
那么把其中的1变成2就能同时让两个出现奇数次的数变成偶数次,最后再把剩下的那个数变成最大值就行
全部评论
同学,瞅瞅我司,医疗独角兽,校招刚开,名额有限,先到先得,我的主页最新动态,绿灯直达,免笔试~
😯也是这个做法但是只过了75
相关推荐
08-18 21:42
武汉大学 算法工程师 点赞 评论 收藏
分享
点赞 评论 收藏
分享