• <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ù)的只保留一個(gè)

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

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

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

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

            6.
            無序的
            考慮整個(gè)數(shù)組,對(duì)多次出現(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 閱讀(153) 評(píng)論(0)  編輯 收藏 引用

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


            久久久久亚洲AV成人网人人网站| 久久国产精品无| 精品国产一区二区三区久久久狼| 亚洲色大成网站www久久九| 蜜桃麻豆WWW久久囤产精品| 久久久久国产精品熟女影院| 国产精品一区二区久久不卡 | 91精品国产91久久| 久久九九免费高清视频| 亚洲精品无码专区久久同性男| 人妻无码精品久久亚瑟影视| 国产高潮国产高潮久久久| 国产精品熟女福利久久AV| 久久精品国产AV一区二区三区| 久久精品国产亚洲一区二区| 欧洲国产伦久久久久久久| 精品久久久久久国产潘金莲| 亚洲国产成人久久综合野外| 久久精品无码专区免费青青| 久久露脸国产精品| 青青草国产成人久久91网| 亚洲中文久久精品无码| 久久性精品| 国产99久久久久久免费看| 无码国内精品久久人妻| 久久露脸国产精品| 久久黄视频| 91久久福利国产成人精品| 久久亚洲AV成人无码国产| 久久人妻无码中文字幕| 欧美粉嫩小泬久久久久久久 | 亚洲伊人久久成综合人影院| 999久久久免费精品国产| 青草国产精品久久久久久| 中文字幕无码av激情不卡久久| 91精品国产91久久| 国产农村妇女毛片精品久久| 国产精品欧美久久久天天影视 | 99久久久精品免费观看国产| 777午夜精品久久av蜜臀| 午夜视频久久久久一区 |