精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

暴力法求解“微信群覆蓋”?

開發(fā) 開發(fā)工具 前端
假設(shè)微信有M個(gè)群(M為億級(jí)別),每個(gè)群內(nèi)平均有N個(gè)用戶(N為十級(jí)別),下面,我們?cè)O(shè)計(jì)算法,求群的覆蓋,并說明算法時(shí)間與空間復(fù)雜度。

題目:求微信群覆蓋

微信有很多群,現(xiàn)進(jìn)行如下抽象:

  • 每個(gè)微信群由一個(gè)***的gid標(biāo)識(shí);
  • 微信群內(nèi)每個(gè)用戶由一個(gè)***的uid標(biāo)識(shí);
  • 一個(gè)用戶可以加入多個(gè)群;
  • 群可以抽象成一個(gè)由不重復(fù)uid組成的集合,例如:
  1. g1{u1, u2, u3} 
  2. g2{u1, u4, u5} 

可以看到,用戶u1加入了g1與g2兩個(gè)群。

[[249955]]

畫外音,注意:

  • gid和uid都是uint64;
  • 集合內(nèi)沒有重復(fù)元素;

假設(shè)微信有M個(gè)群(M為億級(jí)別),每個(gè)群內(nèi)平均有N個(gè)用戶(N為十級(jí)別).

現(xiàn)在要進(jìn)行如下操作:

(1) 如果兩個(gè)微信群中有相同的用戶,則將兩個(gè)微信群合并,并生成一個(gè)新微信群;

例如,上面的g1和g2就會(huì)合并成新的群:

  1. g3{u1, u2, u3, u4, u5}; 

畫外音:集合g1中包含u1,集合g2中包含u1,合并后的微信群g3也只包含一個(gè)u1。

(2) 不斷的進(jìn)行上述操作,直到剩下所有的微信群都不含相同的用戶為止;

將上述操作稱:求群的覆蓋。

設(shè)計(jì)算法,求群的覆蓋,并說明算法時(shí)間與空間復(fù)雜度。

畫外音:58同城2013年校招筆試題。

對(duì)于一個(gè)復(fù)雜的問題,思路肯定是“先解決,再優(yōu)化”,大部分人不是神,很難一步到位。先用一種比較“笨”的方法解決,再看“笨方法”有什么痛點(diǎn),優(yōu)化各個(gè)痛點(diǎn),不斷升級(jí)方案。

拿到這個(gè)問題,很容易想到的思路是:

  • 先初始化M個(gè)集合,用集合來表示微信群gid與用戶uid的關(guān)系;
  • 找到哪兩個(gè)(哪些)集合需要合并;
  • 接著,進(jìn)行集合的合并;
  • 迭代步驟二和步驟三,直至所有集合都沒有相同元素,算法結(jié)束;

***步,如何初始化集合?

set這種數(shù)據(jù)結(jié)構(gòu),大家用得很多,來表示集合:

  • 新建M個(gè)set來表示M個(gè)微信群gid
  • 每個(gè)set插入N個(gè)元素來表示微信群中的用戶uid

set有兩種最常見的實(shí)現(xiàn)方式,一種是樹型set,一種是哈希型set。

假設(shè)有集合:

  1. s={7, 2, 0, 14, 4, 12} 

樹型set的實(shí)現(xiàn)如下:

其特點(diǎn)是:

  • 插入和查找的平均時(shí)間復(fù)雜度是O(lg(n))
  • 能實(shí)現(xiàn)有序查找
  • 省空間

哈希型set實(shí)現(xiàn)如下:

其特點(diǎn)是:

  • 插入和查找的平均時(shí)間復(fù)雜度是O(1)
  • 不能實(shí)現(xiàn)有序查找

畫外音:求群覆蓋,哈希型實(shí)現(xiàn)的初始化更快,復(fù)雜度是O(M*N)。

第二步,如何判斷兩個(gè)(多個(gè))集合要不要合并?

集合對(duì)set(i)和set(j),判斷里面有沒有重復(fù)元素,如果有,就需要合并,判重的偽代碼是:

  1. // 對(duì)set(i)和set(j)進(jìn)行元素判斷并合并 
  2. (1)    foreach (element in set(i)) 
  3. (2)    if (element in set(j)) 
  4.          merge(set(i), set(j)); 

***行(1)遍歷***個(gè)集合set(i)中的所有元素element;

畫外音:這一步的時(shí)間復(fù)雜度是O(N)。

第二行(2)判斷element是否在第二個(gè)集合set(j)中;

畫外音:如果使用哈希型set,第二行(2)的平均時(shí)間復(fù)雜度是O(1)。

這一步的時(shí)間復(fù)雜度至少是O(N)*O(1)=O(N)。

第三步,如何合并集合?

集合對(duì)set(i)和set(j)如果需要合并,只要把一個(gè)集合中的元素插入到另一個(gè)集合中即可:

  1. // 對(duì)set(i)和set(j)進(jìn)行集合合并 
  2. merge(set(i), set(j)){ 
  3. (1)    foreach (element in set(i)) 
  4. (2)    set(j).insert(element); 

***行(1)遍歷***個(gè)集合set(i)中的所有元素element;

畫外音:這一步的時(shí)間復(fù)雜度是O(N)。

第二行(2)把element插入到集合set(j)中;

畫外音:如果使用哈希型set,第二行(2)的平均時(shí)間復(fù)雜度是O(1)。

這一步的時(shí)間復(fù)雜度至少是O(N)*O(1)=O(N)。

第四步:迭代第二步與第三步,直至結(jié)束

對(duì)于M個(gè)集合,暴力針對(duì)所有集合對(duì),進(jìn)行重復(fù)元素判斷并合并,用兩個(gè)for循環(huán)可以暴力解決:

  1. (1)for(i = 1 to M) 
  2. (2)    for(ji+1 to M) 
  3.          //對(duì)set(i)和set(j)進(jìn)行元素判斷并合并 
  4.          foreach (element in set(i)) 
  5.          if (element in set(j)) 
  6.          merge(set(i), set(j)); 

遞歸調(diào)用,兩個(gè)for循環(huán),復(fù)雜度是O(M*M)。

綜上,如果這么解決群覆蓋的問題,時(shí)間復(fù)雜度至少是:

  1. O(M*N) // 集合初始化的過程 
  2. O(M*M) // 兩重for循環(huán)遞歸 
  3. O(N) // 判重 
  4. O(N) // 合并 

畫外音:實(shí)際復(fù)雜度要高于這個(gè),隨著集合的合并,集合元素會(huì)越來越多,判重和合并的成本會(huì)越來越高。

基于“先解決,再優(yōu)化”的思想,很多優(yōu)化方向的問題,自然而然的從腦中蹦出:

(1) 能不能快速通過元素定位集合?

畫外音:

  • 通過集合查元素,哈希型set時(shí)間復(fù)雜度是O(1);
  • 通過元素查集合(句柄),如何來實(shí)現(xiàn)呢?

(2) 能不能快速進(jìn)行集合合并?

(3) 能不能一次合并多個(gè)集合?

經(jīng)典數(shù)據(jù)結(jié)構(gòu),分離集合(disjoint set),它有三類操作:

  • Make-set(a):生成一個(gè)只有一個(gè)元素a的集合;
  • Union(X, Y):合并兩個(gè)集合X和Y;
  • Find-set(a):查找元素a所在集合,即通過元素找集合;

特別適合用來解決這類集合合并與查找的問題,又稱為并查集。

如何利用并查集來解決求“微信群覆蓋”問題,是后文將要介紹的內(nèi)容。

畫外音:先介紹“并查集”這一種方案,后續(xù)再介紹其他方案。

知道并查集的思路和原理,比知道什么是并查集更重要。

算法,其實(shí)還是挺有意思的。

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2021-12-09 15:02:21

算法微信群覆蓋開發(fā)

2021-04-20 08:30:23

微信微信輸入法張小龍

2017-03-27 13:20:36

2021-04-26 05:39:03

微信輸入法騰訊

2013-08-08 10:13:25

微信

2019-10-14 11:26:05

開源技術(shù) 軟件

2025-04-17 09:00:00

架構(gòu)聊消息微信

2019-12-16 17:25:04

Python微信群同步直播

2015-10-19 15:20:14

有魚

2020-03-17 15:01:19

微信醫(yī)保電子憑證

2021-04-27 13:43:42

微信iOS輸入法

2019-12-20 09:22:12

垃圾分類微信城市服務(wù)

2019-11-26 10:08:00

微信醫(yī)院掛號(hào)

2020-01-08 06:40:12

微信微信群移動(dòng)應(yīng)用

2020-02-05 13:15:03

微信移動(dòng)應(yīng)用

2020-07-27 15:06:14

微信張小龍焦慮

2017-01-11 17:01:20

飛魚星

2013-10-24 11:00:30

馬云微信

2021-09-30 05:39:05

微信Android 8.0騰訊

2015-02-13 10:20:15

微信
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

无码国产精品一区二区色情男同| 91制片厂在线| 在线免费看h| 91蜜桃婷婷狠狠久久综合9色| 国产精品视频观看| 青草成人免费视频| 亚欧美在线观看| 超碰在线观看免费| 99re在线精品| 成人欧美一区二区三区在线湿哒哒 | 亚洲一区欧美在线| 精品久久久久久久| 日韩欧美的一区二区| 免费在线观看日韩视频| 超碰人人在线| 亚洲国产精品精华液2区45| av激情久久| 进去里视频在线观看| 午夜日韩福利| 欧美人与禽zozo性伦| 欧美亚洲一级二级| 国产精品福利电影| 久久国产88| 欧美国产日韩视频| 男女男精品视频网站| 欧美在线导航| 欧美一级日韩一级| 男人搞女人网站| segui88久久综合| 国产成人午夜电影网| 日本精品一区二区三区在线播放视频 | 久久九九热免费视频| 久久久亚洲av波多野结衣| 午夜电影一区| 欧美老女人在线| 男人天堂网视频| 成年人在线网站| 一区二区欧美精品| 亚洲一区高清| 国产美女视频一区二区三区| 99久久婷婷国产综合精品| 欧美激情第一页xxx| 99自拍视频在线| 精品美女视频| 亚洲午夜小视频| 久久丫精品国产亚洲av不卡| 中文一区二区三区四区| 91精品国产91久久久久久一区二区| 日韩毛片在线免费看| 中国字幕a在线看韩国电影| 亚洲狠狠爱一区二区三区| av日韩在线看| 青青在线视频| 亚洲国产欧美在线人成| 国产精品久久久久久久久电影网| 成人日批视频| 亚洲精品国产无天堂网2021 | 欧美三级在线视频| 久久综合伊人77777麻豆最新章节| 日本不卡网站| 国产女人水真多18毛片18精品视频 | 欧美精品久久久| 日韩毛片在线一区二区毛片| 91视频观看免费| 蜜桃av噜噜一区二区三区| 亚洲欧洲国产综合| 91女厕偷拍女厕偷拍高清| 九九99久久| 美女做暖暖视频免费在线观看全部网址91| 天堂蜜桃一区二区三区| 国产91色在线播放| 夜夜躁日日躁狠狠久久av| 日韩电影在线免费看| 国产精品mp4| 国产精品揄拍100视频| 免费看日本一区二区| 欧美精品日韩精品| 国产人妻精品久久久久野外| 91成人精品在线| 日韩精品在线免费播放| 国产精品国产三级国产专业不 | 97aⅴ精品视频一二三区| 欧美成熟毛茸茸复古| freemovies性欧美| 亚洲综合在线第一页| 精品这里只有精品| 成人全视频免费观看在线看| 8x福利精品第一导航| 绯色av蜜臀vs少妇| 亚洲国产欧美日韩在线观看第一区| 亚洲视频在线视频| 精品无码久久久久成人漫画 | 久久久人成影片一区二区三区观看 | 欧美日韩爆操| 日韩美女视频免费看| 国产伦子伦对白视频| 99久久er热在这里只有精品15| 日本成人看片网址| 欧美性猛片xxxxx免费中国| 色综合天天综合网国产成人综合天| 小泽玛利亚视频在线观看| 粉嫩一区二区三区四区公司1| 亚洲网站在线看| 欧美黄色免费看| 日韩福利电影在线观看| 成人做爰66片免费看网站| 成人在线观看网站| 午夜伊人狠狠久久| 亚洲免费av一区| 色吊丝一区二区| 免费91在线视频| 国产情侣呻吟对白高潮| a美女胸又www黄视频久久| 亚洲欧洲日韩综合二区| 涩涩视频在线| 日韩精品一区二| 2019男人天堂| 国产日韩亚洲| 国产精品成人观看视频免费| 在线国产情侣| 色综合久久88色综合天天免费| 五月天婷婷亚洲| 自拍亚洲一区| 午夜精品久久久久久久99热| 国产wwwxxx| 欧美国产日韩一二三区| 丝袜老师办公室里做好紧好爽| 日韩成人精品| 久久视频在线直播| 中文字幕第2页| 久久精品亚洲精品国产欧美kt∨ | 欧美精品一区二区视频 | 五月婷婷综合在线| 亚洲国产欧美日韩在线| 久久影视一区| 国产精品嫩草影院久久久| 欧美日韩激情视频一区二区三区| 亚洲成a人片在线不卡一二三区| 亚洲三级在线观看视频| 成人激情诱惑| 国产精品欧美日韩一区二区| 国产精品无码2021在线观看| 黑人巨大精品欧美一区二区一视频| 国产艳妇疯狂做爰视频| 国产精品一区二区美女视频免费看| 亚洲欧美综合区自拍另类| 青青草免费观看视频| proumb性欧美在线观看| 91.com在线| 成人h动漫免费观看网站| 亚洲精品按摩视频| 熟女俱乐部一区二区| 一本色道88久久加勒比精品| 国产一区二区免费电影| 草草视频在线观看| 日韩av在线网站| 日产精品久久久| 久久综合丝袜日本网| 情侣黄网站免费看| 久久不见久久见中文字幕免费| 青青久久aⅴ北条麻妃| 国外av在线| 亚洲三级视频在线观看| 日韩视频免费播放| 久久天堂av| 在线观看日韩欧美| 国产精品无码白浆高潮| 亚洲黄色性网站| 日本三级日本三级日本三级极| 一本色道久久| 日韩精品在在线一区二区中文| 在线āv视频| 精品成人一区二区| 日本女人性生活视频| 久久99国产精品麻豆| 欧美日韩午夜爽爽| 欧美精品国产白浆久久久久| 国产91网红主播在线观看| 日本三级视频在线播放| 日韩欧美高清在线| 日韩免费视频网站| 国产日韩欧美a| 91丝袜超薄交口足| 精品国产91| 91九色国产在线| 丁香花在线电影| 亚洲少妇中文在线| 97国产成人无码精品久久久| 亚洲国产精品久久人人爱| 色噜噜日韩精品欧美一区二区| 极品少妇xxxx偷拍精品少妇| 欧美日韩一区二区三区免费| 97欧美成人| 欧美激情一级二级| 97人人在线| 日韩精品一区二区三区蜜臀| 亚洲精品无码久久久久| 亚洲美腿欧美偷拍| 亚洲黄色小说视频| 成人毛片在线观看| 国产成人美女视频| 国产一区二区三区的电影 | 激情国产在线| 日韩中文字幕在线视频播放| 人妻少妇精品无码专区久久| 欧美日韩一级片在线观看| 日本熟女一区二区| 国产成人av资源| 午夜免费精品视频| 亚洲午夜极品| 中文字幕在线亚洲三区| 免费观看成人性生生活片| 色综合久久精品亚洲国产| 国产精品熟女久久久久久| 精品日本高清在线播放| 成年人av电影| 中文字幕精品一区二区三区精品 | 国产亚洲一区二区在线观看| 国产精品99久久久精品无码| 美女国产一区二区三区| 美女av免费在线观看| 国产综合欧美| 日本一区二区三区四区五区六区| 国产一区二区三区网| 精品一区国产| 福利在线一区| 99国产视频| 国产一区二区三区黄网站| 国产精品盗摄久久久| 9i看片成人免费高清| 91国产美女视频| 午夜av免费在线观看| 日韩欧美电影一二三| av中文字幕在线免费观看| 欧美精品 日韩| 亚洲一级特黄毛片| 欧美影视一区在线| 日本不卡一二区| 中文字幕成人在线观看| 美女久久久久久久久久| 91在线视频播放地址| 精品一区二区视频在线观看| 成人v精品蜜桃久久一区| 男人靠女人免费视频网站| 在线播放精品| av高清在线免费观看| 亚洲午夜一区| 妞干网在线视频观看| 亚洲精选在线| 青青青国产在线观看| 亚洲影视综合| 日本成人黄色网| 免费看精品久久片| 中文字幕 日韩 欧美| 国产精品一色哟哟哟| aaa黄色大片| 97久久精品人人澡人人爽| 久久精品一区二区免费播放| 国产日韩视频一区二区三区| 日本一卡二卡在线播放| 亚洲欧洲国产日韩| 成人免费毛片东京热| 亚洲国产精品综合小说图片区| 日韩 欧美 综合| 色噜噜夜夜夜综合网| 91亚洲国产成人精品一区| 欧美一区二区播放| 老熟妇高潮一区二区高清视频| 亚洲国产精品久久精品怡红院 | 欧美乱熟臀69xxxxxx| 国产情侣激情自拍| 亚洲激情成人网| 成人激情电影在线看| 久久精品人人做人人爽| 性欧美videos高清hd4k| 97激碰免费视频| 日韩网站中文字幕| 97视频资源在线观看| 亚洲理论电影| 国产美女视频免费| 最新国产乱人伦偷精品免费网站| 欧美xxxxx在线视频| 久久99国产精品麻豆| 黄色av网址在线观看| 国产在线观看一区二区| 丝袜熟女一区二区三区| 久久久久亚洲综合| 黄色一级片中国| 日韩欧美高清在线视频| 国产精选第一页| 色老汉av一区二区三区| 99精品视频免费看| 精品无人区太爽高潮在线播放 | 久久这里只精品| 成人一级视频在线观看| 中文字幕有码在线播放| 亚洲一区二区在线免费观看视频| 日日夜夜狠狠操| 精品毛片乱码1区2区3区| 岛国大片在线观看| 欧美精品激情在线观看| 亚洲欧美在线人成swag| 国产日韩久久| 亚洲九九在线| 999在线免费视频| av在线一区二区| 永久免费看mv网站入口| 欧洲一区二区三区在线| 免费看黄色一级视频| 久久久91精品国产| 向日葵视频成人app网址| 国产女主播一区二区| 国产精品伦理久久久久久| 亚洲爆乳无码专区| 成人aaaa免费全部观看| wwwav国产| 欧美日韩免费在线视频| 久久久资源网| 97视频在线播放| 91精品尤物| 在线观看17c| 国产一区二区三区免费播放| 非洲一级黄色片| 色婷婷综合久色| 午夜av免费在线观看| 国内精品久久久| 波多野结衣欧美| 久操手机在线视频| 国产一区在线观看视频| 国产成人在线网址| 欧美三级资源在线| 午夜免费视频在线国产| 国产精品女主播| 欧美综合另类| 亚洲黄色小视频在线观看| 国产三级三级三级精品8ⅰ区| wwwwww国产| 日韩成人av网| 在线最新版中文在线| 久久久久一区二区三区| 亚洲专区免费| 少妇毛片一区二区三区| 色婷婷精品大在线视频| 色婷婷av一区二区三区之红樱桃| 久久久免费在线观看| 国产精品极品| 狠狠97人人婷婷五月| 99re8在线精品视频免费播放| 国产成人自拍视频在线| 亚洲黄一区二区| 色婷婷综合久久久中字幕精品久久| 欧美人与物videos另类| 日韩激情av在线| 国产高清视频免费在线观看| 91精品国产综合久久久久久| 羞羞污视频在线观看| 97在线中文字幕| 亚洲深夜福利| 久操视频在线观看免费| 欧美日韩国产一二三| 黄色在线观看网站| 成人区精品一区二区| 中文日韩在线| 国产探花视频在线播放| 91精品国产麻豆国产自产在线| 午夜伦理大片视频在线观看| 激情久久av| 日韩电影免费在线看| 成人在线观看高清| 精品sm捆绑视频| 午夜精品成人av| 91久久偷偷做嫩草影院| 激情综合电影网| 这里只有久久精品| 欧美精品一卡二卡| 91黄页在线观看| 日产精品一线二线三线芒果| 激情综合色丁香一区二区| 久久中文字幕在线观看| 亚洲片在线观看| 日本一区二区中文字幕| 日本中文字幕亚洲| 国产视频一区在线播放| jizz中国少妇| 欧美中文字幕在线观看| 久久久久亚洲| 日本护士做爰视频| 欧美日韩国产一二三| 成人一级福利| 亚洲欧洲三级| 成人福利视频在线| 中文字幕av久久爽| 国内精品久久久久久| 成人区精品一区二区婷婷| 岛国大片在线免费观看| 欧美综合一区二区| xxx.xxx欧美| 亚洲一一在线| 97久久人人超碰| 成人黄色免费视频|