• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 183,  comments - 10,  trackbacks - 0

            淘汰數(shù)組中的重復(fù)的數(shù)

            淘汰數(shù)組中的重復(fù)的數(shù),有多種方式

            1.
            有序的
            重復(fù)的只保留一個

            2.
            有序的
            重復(fù)的全部淘汰

            3.
            無序的
            連續(xù)重復(fù)的保留一個,后面如果再次出現(xiàn),但是不連續(xù),還是保留

            4.
            無序的
            連續(xù)重復(fù)的都淘汰,后面如果在重復(fù)出現(xiàn)多次,也是全部淘汰,如果只出現(xiàn)一次,則保留

            5.
            無序的
            考慮整個數(shù)組中,對重復(fù)的,只保留第一個,不管連續(xù)還是不連續(xù)

            6.
            無序的
            考慮整個數(shù)組,對多次出現(xiàn)的,不考慮連續(xù)不連續(xù),都淘汰

              1 #include <iostream>
              2 #include <cstring>
              3 #include <algorithm>
              4 #include <map>
              5 using namespace std;
              6 
              7 void foo_0(int* a, int n, int& alen)
              8 {
              9     sort(a, a + n);
             10     // foo_2(a, n, alen);
             11     alen = 1;
             12     for (int i = 1; i <= n - 1++i)
             13     {
             14         if (a[i] != a[i - 1])
             15         {
             16             a[alen++= a[i];
             17         }
             18     }
             19 }
             20 
             21 void foo_1(int* a, int n, int& alen)
             22 {
             23     sort(a, a + n);
             24     // foo_3(a, n, alen);
             25     alen = 0;
             26     int i = 0;
             27     while (i <= n - 1)
             28     {
             29         if (i <= n - 2)
             30         {
             31             if (a[i] == a[i + 1])
             32             {
             33                 i += 2;
             34                 while (i <= n - 1 && a[i] == a[i - 1])
             35                 {
             36                     ++i;
             37                 }
             38             }
             39             else
             40             {
             41                 a[alen++= a[i++];
             42             }
             43         }
             44         else
             45         {
             46             a[alen++= a[i++];
             47         }
             48     }
             49 }
             50 
             51 void foo_2(int* a, int n, int& alen)
             52 {
             53     alen = 1;
             54     for (int i = 1; i <= n - 1++i)
             55     {
             56         if (a[i] != a[i - 1])
             57         {
             58             a[alen++= a[i];
             59         }
             60     }
             61 }
             62 
             63 void foo_3(int* a, int n, int& alen)
             64 {
             65     alen = 0;
             66     int i = 0;
             67     while (i <= n - 1)
             68     {
             69         if (i <= n - 2)
             70         {
             71             if (a[i] == a[i + 1])
             72             {
             73                 i += 2;
             74                 while (i <= n - 1 && a[i] == a[i - 1])
             75                 {
             76                     ++i;
             77                 }
             78             }
             79             else
             80             {
             81                 a[alen++= a[i++];
             82             }
             83         }
             84         else
             85         {
             86             a[alen++= a[i++];
             87         }
             88     }
             89 }
             90 
             91 void foo_4(int* a, int n, int& alen)
             92 {
             93     alen = 0;
             94     map<intint> m;
             95     for (int i = 0; i <= n - 1++i)
             96     {
             97         ++m[a[i]];
             98     }
             99     for (int i = 0; i <= n - 1++i)
            100     {
            101         if (m[a[i]] == 1)
            102         {
            103             a[alen++= a[i];
            104         }
            105         else if (m[a[i]] >= 2)
            106         {
            107             a[alen++= a[i];
            108             m[a[i]] = -1;
            109         }
            110     }
            111 }
            112 
            113 void foo_5(int* a, int n, int& alen)
            114 {
            115     alen = 0;
            116     map<intint> m;
            117     for (int i = 0; i <= n - 1++i)
            118     {
            119         ++m[a[i]];
            120     }
            121     for (int i = 0; i <= n - 1++i)
            122     {
            123         if (m[a[i]] == 1)
            124         {
            125             a[alen++= a[i];
            126         }
            127     }
            128 }
            129 
            130 void init(int*& a, int& len)
            131 {
            132     int t[] = {2234522678999};
            133     // int t[] = {1, 1, 1, 1};
            134     len = sizeof (t) / sizeof (*t);
            135     delete [] a;
            136     a = new int[len];
            137     memcpy(a, t, sizeof (*a) * len);
            138 }
            139 
            140 void print(int a[], int n)
            141 {
            142     for (int i = 0; i != n; ++i)
            143     {
            144         cout << a[i] << ' ';
            145     }
            146     cout << endl;
            147 }
            148 
            149 int main()
            150 {
            151     int* a = 0;
            152     int len = 0;
            153     
            154     init(a, len);
            155     foo_0(a, len, len);
            156     print(a, len);
            157     
            158     init(a, len);
            159     print(a, len);
            160     
            161     foo_1(a, len, len);
            162     print(a, len);
            163     
            164     init(a, len);
            165     print(a, len);
            166     
            167     foo_2(a, len, len);
            168     print(a, len);
            169     
            170     init(a, len);
            171     foo_3(a, len, len);
            172     print(a, len);
            173     
            174     init(a, len);
            175     print(a, len);
            176     foo_4(a, len, len);
            177     print(a, len);
            178     
            179     init(a, len);
            180     print(a, len);
            181     foo_5(a, len, len);
            182     print(a, len);
            183 }

             

            posted on 2011-07-29 00:27 unixfy 閱讀(156) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            欧美大香线蕉线伊人久久| 久久久久国产精品| 国产免费久久精品99re丫y| 99精品久久精品一区二区| 无码AV中文字幕久久专区| 久久国产精品一区二区| 国产一区二区精品久久凹凸| 国产精品成人久久久| 91精品免费久久久久久久久| 人妻系列无码专区久久五月天| 少妇被又大又粗又爽毛片久久黑人 | 久久久久久国产a免费观看不卡| 手机看片久久高清国产日韩| 伊人久久无码中文字幕| 久久久久无码中| 久久免费小视频| 久久午夜无码鲁丝片| 无码任你躁久久久久久| 国产精品久久久久久久久| 日本五月天婷久久网站| 久久久久一本毛久久久| 久久香综合精品久久伊人| 久久久久久午夜精品| 欧美一级久久久久久久大| 久久综合欧美成人| 精品久久久久久中文字幕人妻最新| 亚洲国产精品成人AV无码久久综合影院 | 日韩人妻无码一区二区三区久久99| segui久久国产精品| 久久久久久午夜成人影院| 99久久国产综合精品女同图片| 久久青青草原精品国产软件| 国产精品久久久99| 色综合久久中文综合网| 亚洲综合精品香蕉久久网97| 久久精品国产精品青草| 久久精品成人免费网站| 99久久国产综合精品五月天喷水| 久久亚洲精品中文字幕三区| 99精品久久久久久久婷婷| 国产精久久一区二区三区|