简单的算法问题14——排序后的数组删除重复数字
- 所有算法均是用C++编写
- 所有题目均是来自计蒜客
题目
给定升序排序的数组,如果数组有2个或者2个以上相同的数字,去掉他们,直到剩下2个为止。
例如:
数组 A[]=[1,1,1,2,2,3] 你的算法需要返回新数组的长度5, 此时A为[1,1,2,2,3]。
输入格式
第一行输入一个不超过200的数字n,第二行输入A[n]。
输出格式
输出新数组的长度。
样例输入
6
1 1 1 1 3 3
样例输出
4
刨坑点
- 这道题我并没真正的删除重复度大于2的数字,而只是将
array.size()
重复度大于2的--
。
代码
#include<iostream>
#include<vector>
typedef struct SeqList{
int flag;
int num;
}SeqList;
using namespace std;
int main(){
int n,temp=0;
cin>>n;
vector <SeqList> array(n);
for(int i=0;i<n;i++){
cin>>array[i].num;
array[i].flag=0;
}
for(int i=0;i<n;i++){
temp=array[i].num;
for(int j=i+1;j<n;j++){
if(temp==array[j].num){
array[j].flag++;
}
}
}
int length=array.size();
for(int i=0;i<n;i++){
if(array[i].flag>1){
length--;
}
}
cout<<length;
return 0;
}