青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-80  評論-24  文章-0  trackbacks-0
這道看似非常簡單的題其實有很多奇妙的解法,看到網上一些神牛的解法實在是嘆為觀止!
不過我們還是按部就班的來:
1、最容易想到的方法

 1 int count_one(unsigned int x) {
 2   int count = 0;
 3   while (x) {
 4     if (x & 1 == 1) {
 5       count++;
 6     }   
 7     x >>= 1;
 8   }
 9   return count;
10 }

沒有多少可以講的,非常簡單,不過這樣做會發現,該算法時間復雜度是O(logN)的

2、為了優化上面算法,盡量做到降低時間復雜度,但是O(logN)的復雜度再降低會是什么樣子呢?O(1)?那就直接建索引?但是畢竟32位整數想要建索引的話那內存耗費就太大了,所以我們先看看能不能使得復雜度將到O(m),其中m是x中1的個數,那么怎么樣才能每進行一次循環x的1的個數就減1呢?比較難想到的地方就是它了:x & (x - 1),比如x為12,即1100b,如果進行一次x = x & (x - 1)運算則x的值為1000b。因此代碼如下:

1 int count_one(unsigned int x) {
2   int count = 0;
3   while (x) {
4     count++;
5     x &= x - 1;
6   }
7   return count;
8 }

上面的代碼看似和方法1中的代碼相似,但是每次循環使問題減小的規模是不一樣的。
3、該方法是從網上借鑒的,確實不太容易想到,非常的巧妙,采用典型的分治思想:比如我們有一個數字11111111b,基礎情況是先計算每一位的1的個數(這個步驟可以省略,類似歸并排序的基礎情況,對一個元素的排序是不需要排);再歸并,計算相鄰兩位的1的個數,即第0位和第1位的1的個數為2個,第2位和第3位的1的個數為2個,...,第6位和第7位的1的個數為2個;這樣得到10 10 10 10b,然后再歸并,計算第0,1,2,3位的1的個數,計算第4,5,6,7位的1的個數,得到0100 0100b;然后再歸并得到第0,1,2,3,4,5,6,7位的1的個數為1000b。上面分析的是8位二進制情況,對于32位二進制,同理,只需要繼續歸并即可,代碼如下:

1 int count_one(unsigned int x) {
2   x = (x & 0x55555555) + ((x >> 1) & 0x55555555);
3   x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
4   x = (x & 0x0f0f0f0f) + ((x >> 4) & 0x0f0f0f0f);
5   x = (x & 0x00ff00ff) + ((x >> 8) & 0x00ff00ff);
6   x = (x & 0x0000ffff) + ((x >> 16) & 0x0000ffff);
7   return x;
8 }

對于方法3,時間復雜度可以認為是O(1)的,不過真實速度和方法2的pk我確實沒有比較過,因為我們要求的數的位數總不會太大,所以時間差距不會太多,甚至在這種小規模位數的情況下會出現相反結果,不過方法3的思想實在是巧妙,如果沒有對分治算法的透徹理解,是很難想到用分治去解決該題的

領教了!
posted on 2012-09-04 10:52 myjfm 閱讀(643) 評論(0)  編輯 收藏 引用 所屬分類: 算法基礎
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            9l视频自拍蝌蚪9l视频成人| 亚洲午夜久久久| 久久久天天操| 久久精品人人做人人综合| 亚洲精品视频免费观看| 国产亚洲一级高清| 国产精品久久99| 欧美区高清在线| 欧美精品久久久久久久久老牛影院| 欧美中文字幕精品| 亚洲欧美韩国| 香蕉久久精品日日躁夜夜躁| 中文一区二区| 亚洲一区二区在线免费观看| 一区二区日韩| 亚洲一区二区三区免费观看| 亚洲专区在线视频| 欧美在线一区二区三区| 久久九九热免费视频| 久久久久久久999精品视频| 久久狠狠婷婷| 久久久久久久久久久久久久一区| 久久久91精品国产一区二区精品| 久久成人在线| 免费在线视频一区| 欧美久久九九| 国产精品久久久久9999| 国产视频一区在线观看| 精品99一区二区| 亚洲人成在线观看| 宅男精品视频| 午夜在线电影亚洲一区| 久久久久久久精| 欧美激情bt| 一区二区三区日韩欧美精品| 亚洲欧美国产另类| 久久婷婷激情| 欧美三级在线| 国产区欧美区日韩区| 在线日韩中文字幕| 亚洲一二三四区| 99re66热这里只有精品4| 亚洲欧美国产毛片在线| 久久久久久黄| 裸体丰满少妇做受久久99精品| 欧美激情一区在线| 午夜精品短视频| 欧美精品首页| 韩日精品视频| 亚洲免费在线| 欧美激情影音先锋| 午夜精品亚洲| 欧美精品在线播放| 国产一区视频观看| 亚洲色诱最新| 欧美成人午夜激情| 亚洲自拍偷拍一区| 欧美天堂亚洲电影院在线观看| 欧美日韩国语| 一区二区亚洲| 午夜一区二区三区不卡视频| 欧美成人一二三| 亚洲欧美卡通另类91av| 欧美日韩不卡合集视频| 伊人狠狠色j香婷婷综合| 亚洲综合三区| 亚洲黄页视频免费观看| 欧美一区二视频| 欧美网站在线| 日韩视频不卡| 欧美激情亚洲激情| 久久精品视频导航| 国产欧美日韩免费| 午夜精品久久久久久久99黑人| 亚洲国产视频直播| 久久伊伊香蕉| 在线精品视频在线观看高清| 欧美一区二区三区在线看 | 在线视频国产日韩| 久久久人人人| 欧美中文在线观看| 韩国成人福利片在线播放| 亚洲欧美中文在线视频| 在线视频欧美一区| 国产精品久久久久久亚洲毛片 | 久久精品1区| 亚洲女同在线| 国产美女精品人人做人人爽| 亚洲欧美日本在线| 国产精品99久久久久久白浆小说| 欧美日韩三区四区| 亚洲无毛电影| 亚洲素人一区二区| 国产精品高潮呻吟久久| 亚洲欧美日韩另类精品一区二区三区| 亚洲免费观看高清完整版在线观看| 欧美高清日韩| 亚洲天堂成人在线观看| 亚洲视频999| 国产亚洲欧洲一区高清在线观看| 久久久久成人精品| 久久亚洲精选| 亚洲国内自拍| 一区二区三区四区五区精品| 国产精品久久久久久亚洲毛片 | 亚洲精品你懂的| 亚洲卡通欧美制服中文| 国产精品久久久久高潮| 久久久久久久久久看片| 男同欧美伦乱| 久久久精品国产一区二区三区| 老牛嫩草一区二区三区日本| 欧美成人免费一级人片100| 亚洲黑丝在线| 国产综合婷婷| 一本不卡影院| 激情国产一区| 99精品欧美| 欧美在线国产| 在线观看91久久久久久| 一区二区三区精品视频| 亚洲免费观看视频| 国产精品成人va在线观看| 久久国产精品99国产| 久久精品一区| 亚洲在线一区| 久久综合精品一区| 欧美va亚洲va国产综合| 99re6这里只有精品| 亚洲欧洲日韩综合二区| 免费成人小视频| 亚洲欧美日韩在线播放| 午夜精品视频一区| 欧美中文字幕视频在线观看| 国产精品一区视频| 免播放器亚洲一区| 久久电影一区| 午夜宅男久久久| 亚洲国产老妈| 亚洲激情中文1区| 日韩亚洲精品在线| 欧美成人精品在线| 日韩性生活视频| 欧美日韩在线另类| 亚洲精品久久久久中文字幕欢迎你| 久久精品国产99国产精品| 亚洲精品综合精品自拍| 国产精自产拍久久久久久| 久久全球大尺度高清视频| 久久九九精品99国产精品| 亚洲国产清纯| 黄色一区二区在线观看| 久久亚洲影院| 美女日韩在线中文字幕| 欧美成人一区二区三区在线观看 | 久久手机精品视频| 香蕉久久精品日日躁夜夜躁| 亚洲第一精品久久忘忧草社区| 亚洲精品一区二区三区蜜桃久| 午夜日本精品| 在线播放亚洲一区| 久久久国产精品亚洲一区| 日韩一区二区精品| 亚洲精品视频在线观看网站| 欧美日韩在线视频一区二区| 久久综合伊人77777蜜臀| 亚洲理伦在线| 国产精品有限公司| 在线亚洲欧美专区二区| 亚洲精品乱码久久久久久| 亚洲三级免费| 亚洲精品视频一区| 一区二区三区视频在线播放| 亚洲欧洲一区二区三区| 国产亚洲综合在线| 久久久亚洲高清| 亚洲欧美在线视频观看| 在线天堂一区av电影| 亚洲免费大片| 欧美一区二区三区视频在线| 麻豆精品一区二区av白丝在线| 久久人人爽人人爽| 亚洲欧美日韩精品| 快播亚洲色图| 久久福利资源站| 国产精品腿扒开做爽爽爽挤奶网站| 欧美a级大片| 日韩一级在线| 亚洲欧美区自拍先锋| 国产日韩一区二区| 中日韩美女免费视频网址在线观看| 亚洲精品视频在线观看免费| 久久国产黑丝| 欧美国产日韩精品免费观看| 国产综合欧美| 午夜精品免费视频| 久久永久免费| 久久久免费av| 樱桃国产成人精品视频| 日韩午夜激情|