0
已解决
朱小川
缔造者
缔造者
题目描述 Description
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,输出移除后数组的新长度。
输入描述 Input Description
两行,第一行一个整数n,表示数组大小
第二行n个已排序的整数
输出描述 Output Description
删去重复元素后的数组长度
样例输入 Sample Input
6 1 1 1 2 2 3
样例输出 Sample Output
5
数据范围及提示 Data Size & Hint
1<=n<=200,0<=每个元素值<=200
0
0
0
王子耀
缔造者
缔造者
有错误代码吗,我可以帮你看看
王子耀在2021-08-19 17:37:36追加了内容
你现在学到哪里了?
桶计数学到了吗?
王子耀在2021-08-19 17:46:31追加了内容
输入,然后边输入边计数,这个应该知道
然后开始遍历,从1到输入的数可能的最大值
然后如果技术大于2,则把技术赋值为2。
然后在遍历一次,跟上一个循环一样,然后进行计数
最后输出你的总计数
0
0
0
0
杜Dream
高级守护
高级守护
#include<iostream>
using namespace std;
整形 l;
主函数(){
整形 a;
输入>>a;
整形 s[a];
for (int i=0;i<a;i++) {
cin>>s[i];
for(int j=0;j<=i;j++){
if(s[i]==s[j]) l++; }
if(l>2)
s[i]=-1;
l=0;
}
int f=0;
for(int i=0;i<a;i++){
if(s[i]!=-1)
f++;
}
输出<<f;
return 0;
}
0
0
0
王文博
缔造者之神
缔造者之神
for(int i=0;i<=200;i++)
{
if(b[i]>2)
{
b[i]=2;
}
sum+=b[i];
}
望采纳!
b为桶数组
0
李显晨
中级启示者
中级启示者
for(int i=1;i<=n;i++){
cin>>t;
a[t]++;
if(a[t]>2) a[t]=2;
}
for(int i=0;i<=200;i++){
cnt+=a[i];
}
cout<<cnt;
主要代码,a是桶数组
0
张恩泽
高级天翼
高级天翼
先用桶记录每个数出现的次数,然后再循环判断,出现两次以上的数就不要,出现次数直接置为2
然后再从0到200循环,把桶里的数累加起来就是答案
0