隨筆-28  評(píng)論-51  文章-10  trackbacks-0

          面試的??碱},關(guān)注算法復(fù)雜度和空間,

          假如是下面的方法判斷是否有重復(fù)
          int a[MAX] = {0};
          unsigned int x;
          for(int i=0;i <n;i++)
          {
             //讀入x
             if(a[x]==1)
             {
                 //x重復(fù)出現(xiàn)了
             }
             else
             {
                 a[x]=1;
             }
          }

          那么,MAX比較大時(shí)就不合適了
          但是可以把“用int數(shù)組記錄是否重復(fù)”改為“用每一個(gè)bit記錄是否重復(fù)”,于是變成:
          int a[MAX] = {0};
          unsigned int x;
          const int iBitCount = 32;
          for(int i=0;i <n;i++)
          {
             //讀入x
             if(a[x/iBitCount]& (1 < <(x%iBitCount))!=0)
             {
                 //x重復(fù)出現(xiàn)了
             }
             else
             {
                 a[x/iBitCount] ¦= (1 < <(x%iBitCount));
             }
          }

          另有,原地排序等O(1),排序后除重等


          posted on 2008-04-22 22:47 fullfocus 閱讀(851) 評(píng)論(2)  編輯  收藏 所屬分類: 算法

          評(píng)論:
          # re: (轉(zhuǎn))判斷數(shù)組中元素是否重復(fù) 2008-04-23 16:25 | 初學(xué)者
          你為什么不用list自帶的方法去判斷呢?  回復(fù)  更多評(píng)論
            
          # re: (轉(zhuǎn))判斷數(shù)組中元素是否重復(fù)[未登錄] 2008-04-23 18:25 | fullfocus
          同學(xué),這個(gè)是面試題啊,如果沒有自己的邏輯,用現(xiàn)成的會(huì)被BS的,呵呵  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 唐山市| 浑源县| 页游| 吉水县| 西藏| 涞水县| 广平县| 巴青县| 衡东县| 天镇县| 本溪| 察雅县| 姜堰市| 灵台县| 夏津县| 高清| 平陆县| 桑植县| 特克斯县| 蒙阴县| 南澳县| 麟游县| 阿拉尔市| 临安市| 鄄城县| 儋州市| 河源市| 留坝县| 莎车县| 泾川县| 西和县| 周至县| 康马县| 屏东市| 独山县| 中山市| 阜阳市| 高尔夫| 上林县| 富锦市| 拜城县|