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


    思路:

    使用两个数组,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 }
  • 相关阅读:
    IOS开发--网络篇-->GCD(Grand Central Dispatch)的详解
    drf viewset
    12.6 drf 结构化组建
    12.5
    12.4
    12.3
    12.2
    12.1 angular vue react web前端三大主流框架的对比
    11.30
    11.28 过滤器的相关操作
  • 原文地址:https://www.cnblogs.com/PennyXia/p/12654888.html
Copyright © 2020-2023  润新知