zoukankan      html  css  js  c++  java
  • 题解——明明的随机数(数组去重和排序)

    #include <iostream>

    #include <cstdio>

    using namespace std;

    int n;

    int a[105];

    int b[105];

    int read()

    {

        scanf("%d",&n);

        for(int i=0;i<n;i++)//不能开一个变量大小的数组,但可以用for循环来控制使用多少空间

        {

            int x;

            scanf("%d",&x)

            a[i]=x;

        }

    }

    void fun()

    {

        sort(a,a+n);

        int sum=0;

        for(int i=0;i<n-1;i++)//去重

        {

            if(a[i]!=a[i+1])

            {

                b[sum]=a[i];

                sum++;  //计数

            }

        }

        if(a[n-2]!=a[n-1])

        {

            b[sum]=a[n-1];

            cout<<sum+1<<endl;

            for(int i=0;i<sum+1;i++)

                printf("%d ",b[i]);

        }

        else

        {

            cout<<sum<<endl;

            for(int i=0;i<sum;i++)

                printf("%d ",b[i]);

        }

       

    }

    int main()

    {

        read();

        fun();

        return 0;

    }

    另外一种算法是:再开一个新的数组b,每次从a数组中往b数组中拿元素时,都检查一遍b数组中是不是已经有了这个元素,如果已经有了,那么就不放进去了。但是这样的算法的复杂度为O(n^2),明显没有上述算法时间复杂度低。

    这篇文章,是又一个故事的结束...
    lazy's story is continuing.
  • 相关阅读:
    Maven导入com.google.common.collect jar包
    poj 2192 Zipper
    poj 3278 Catch That Cow
    poj 2488 A Knight's Journey
    poj 3982 序列
    poj 2109 Power of Cryptography
    poj 3258 3273
    java中大数的一些基本运算
    hdu 1715 大菲波数
    最小生成树模板
  • 原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/13500752.html
Copyright © 2011-2022 走看看