• <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.
            無(wú)序的
            連續(xù)重復(fù)的保留一個(gè),后面如果再次出現(xiàn),但是不連續(xù),還是保留

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

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

            6.
            無(wú)序的
            考慮整個(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 閱讀(156) 評(píng)論(0)  編輯 收藏 引用

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


            人妻无码精品久久亚瑟影视| 日韩十八禁一区二区久久| Xx性欧美肥妇精品久久久久久| 久久er99热精品一区二区| 久久精品国产亚洲av麻豆小说| 国产精品女同久久久久电影院 | 99久久做夜夜爱天天做精品| 久久久久久精品成人免费图片| 久久久久久久久久久久中文字幕 | 久久精品国产亚洲av麻豆图片| 久久丫精品国产亚洲av不卡| 日本一区精品久久久久影院| 久久久精品人妻一区二区三区蜜桃| 久久不见久久见免费视频7| 午夜精品久久久久9999高清| 久久成人国产精品二三区| 国产精品久久久久免费a∨| 26uuu久久五月天| 69久久夜色精品国产69| 久久久久久综合网天天| 欧美久久久久久午夜精品| 国产成年无码久久久久毛片| 久久九九久精品国产免费直播| 国产成人久久精品二区三区| 亚洲AV日韩精品久久久久| 2021国产精品久久精品| 久久伊人中文无码| 国产精品欧美久久久久天天影视 | 久久亚洲2019中文字幕| 亚洲国产二区三区久久| 国产精品岛国久久久久| 国产精品99精品久久免费| 99久久精品免费看国产一区二区三区 | 欧洲精品久久久av无码电影 | 久久99国产亚洲高清观看首页| 久久久久久综合网天天| 久久强奷乱码老熟女网站| 无码精品久久一区二区三区| 亚洲精品成人网久久久久久| 性欧美丰满熟妇XXXX性久久久 | 成人久久精品一区二区三区|