码迷,mamicode.com
首页 > 编程语言 > 详细

【数组】筛选数组arr中重复的元素,考虑时间复杂度

时间:2020-04-07 18:25:47      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:namespace   include   直接   需要   下标   clu   pac   name   动态   

思路:

使用两个数组,a[]存储所有arr中重复的元素,另一个数组b[]下标是arr中的元素值,数组元素是对应下标值出现的次数。时间复杂度是O(n)

需要注意的是,b[]需要申请静态数组,因为如果使用动态数组相邻两个元素值差别的话会发生溢出;a[]需要时动态数组,因为元素个数不确定同时所有元素都是有效输出,直接遍历输出即可。

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 #define MAXSIZE 100
 5 
 6 int b[MAXSIZE] = { 0 };
 7 vector<int>a;
 8 int arr[5] = { 1,4,3,1,4 };
 9 
10 void repeat(int*arr, int n) {
11     for (int i = 0; i < n; i++) {
12         b[arr[i]]++;
13     }
14     for (int i = 0; i < MAXSIZE; i++) {
15         if (b[i] > 1)
16             a.push_back(i);
17     }
18 }
19 
20 int main() {
21     repeat(arr, 5);
22     for (int i = 0; i < a.size(); i++)
23         cout << a[i] << " ";
24     return 0;
25 }

 

【数组】筛选数组arr中重复的元素,考虑时间复杂度

标签:namespace   include   直接   需要   下标   clu   pac   name   动态   

原文地址:https://www.cnblogs.com/PennyXia/p/12654888.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!