问题标题: 酷町堂:请求支援 4703

0
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
已采纳
杜Dream
杜Dream
高级守护
高级守护

ding!!!朱小川!!!

0
李锦昊
李锦昊
中级天翼
中级天翼

作为一个水王

才学到这啊!!!

0
王子耀
王子耀
缔造者
缔造者

有错误代码吗,我可以帮你看看

王子耀在2021-08-19 17:37:36追加了内容

你现在学到哪里了?

桶计数学到了吗?

王子耀在2021-08-19 17:46:31追加了内容

输入,然后边输入边计数,这个应该知道

然后开始遍历,从1到输入的数可能的最大值

然后如果技术大于2,则把技术赋值为2。

然后在遍历一次,跟上一个循环一样,然后进行计数

最后输出你的总计数

0
0
武奕楷
武奕楷
新手天翼
新手天翼

思路:

1.定义桶数组

2.输入+桶计数

3.遍历通数组

    如果这个数的出现次数<3次

        计数直接加这个数的出现次数

    否则

        计数+2

0
0
杜Dream
杜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
李奕歌
李奕歌
初级天翼
初级天翼

核心:

for(int i=0;i<=200;i++){
        if(a[i]>=2){
            cnt+=2;
            continue;
        }
        if(a[i]>0){
            cnt++;
        }
    }

 

我要回答