日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

摩尔投票法(力扣- -229. 求众数 II)

發(fā)布時間:2024/4/11 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 摩尔投票法(力扣- -229. 求众数 II) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摩爾投票法(力扣- -229. 求眾數(shù) II)

文章目錄

  • 摩爾投票法(力扣- -229. 求眾數(shù) II)
    • 一、題目描述
    • 二、分析
      • 摩爾投票法
      • 總結(jié)
    • 三、代碼

一、題目描述

二、分析

  • 這道題如果用O(N)O(N)O(N)的空間復(fù)雜度來解決是非常簡單的,但是題目要求:嘗試設(shè)計時間復(fù)雜度為 O(n)、空間復(fù)雜度為 O(1)的算法解決此問題。
  • 這里介紹摩爾投票法

摩爾投票法

  • 摩爾投票法,解決的問題是如何在任意多的候選人中,選出票數(shù)超過一半的那個人。注意,是超出一半票數(shù)的那個人。

  • 假設(shè)投票是這樣的,[A, C, A, A, B](ABC 是指三個候選人)。

  • 第一張票與第二張票進(jìn)行對坑,如果票不同則互相抵消掉

  • 接著第三票與第四票進(jìn)行對坑,如果票相同,則增加這個候選人的可抵消票數(shù)

  • 這個候選人拿著可抵消票數(shù)與第五張票對坑,如果票不同,則互相抵消掉,即候選人的可抵消票數(shù) -1。

  • 圖解

看完上面的圖片之后,相信已經(jīng)理解摩爾投票法是如何選取一個最有希望的候選人的。

  • 豬豬豬豬豬豬意:

  • 上面最后得道的結(jié)果并不意味著這個候選人的票數(shù)一定能超過一半,例如 [A, B, C] 的抵消階段,最后得到的結(jié)果是 [C,1],C 候選人的票數(shù)也未能超過一半的票數(shù)。

  • 這里有一個優(yōu)化,如果最后得到的可抵消票數(shù)是 0 的話,那他已經(jīng)無緣票數(shù)能超過一半的那個人了。因為本來可能有希望的,但是被后面的一張不同的票抵消掉了。所以,在這里可以直接返回結(jié)果,無需后面的計算了。

  • 如果最后得到的抵消票數(shù)不為 0 的話,那說明他可能希望的,這是我們需要一個階段來驗證這個候選人的票數(shù)是否超過一半—— 計數(shù)階段。

  • 所以摩爾投票法分為兩個階段:抵消階段和計數(shù)階段。

  • 抵消階段:兩個不同投票進(jìn)行對坑,并且同時抵消掉各一張票,如果兩個投票相同,則累加可抵消的次數(shù);

  • 計數(shù)階段:在抵消階段最后得到的抵消計數(shù)只要不為 0,那這個候選人是有可能超過一半的票數(shù)的,為了驗證,則需要遍歷一次,統(tǒng)計票數(shù),才可確定。

  • 摩爾投票法經(jīng)歷兩個階段最多消耗 O(2n)O(2n)O(2n) 的時間,也屬于 O(n)O(n)O(n) 的線性時間復(fù)雜度,另外空間復(fù)雜度也達(dá)到常量級。

  • 理解摩爾投票法之后,我們再回到題目描述,題目可以看作是:在任意多的候選人中,選出票數(shù)超過? 1/3 ?的候選人。

  • 我們可以這樣理解,假設(shè)投票是這樣的 [A, B, C, A, A, B, C](ABC 是指三個候選人)。

  • 第 1 張票,第 2 張票和第3張票進(jìn)行對坑,如果票都不同,則互相抵消掉;

  • 第 4 張票,第 5 張票和第 6 張票進(jìn)行對坑,如果有部分相同,則累計增加他們的可抵消票數(shù),如 [A, 2] 和 [B, 1];

  • 接著將 [A, 2] 和 [B, 1] 與第 7 張票進(jìn)行對坑,如果票都沒匹配上,則互相抵消掉,變成 [A, 1] 和 `[B, 0] 。

  • 圖解

總結(jié)

  • 看完圖片之后,是不是理解了,是不是也清晰了。

  • 如果至多選一個代表,那他的票數(shù)至少要超過一半(?1/2?)(? 1/2 ?)?1/2?的票數(shù);

  • 如果至多選兩個代表,那他們的票數(shù)至少要超過(?1/3?)(? 1/3 ?)(?1/3?) 的票數(shù);

  • 如果至多選m個代表,那他們的票數(shù)至少要超過 (?1/(m+1)?)(? 1/(m+1) ?)(?1/(m+1)?)的票數(shù)。

所以以后碰到這樣的問題,而且要求達(dá)到線性的時間復(fù)雜度以及常量級的空間復(fù)雜度,直接套上摩爾投票法

三、代碼

class Solution { public:vector<int> majorityElement(vector<int>& nums) {if(nums.empty()){return {};}//題目求的是滿足元素個數(shù)大雨n / 3的元素,空間復(fù)雜度為O(1)//所以只需要按摩爾投票法記錄2個元素的抵消個計數(shù)情況即可//第一個元素及票數(shù)情況int target1 = nums[0];int count1 = 0;//第二個元素及票數(shù)情況int target2 = nums[0];int count2 = 0;//遍歷for(auto& e : nums){//如果和記錄的元素中有相等的情況,更新他的計數(shù)if(e == target1){count1++;continue;}else if(e == target2){count2++;continue;}//程序走到這里代表沒有和記錄的元素相等的情況,代表//需要進(jìn)行抵消操作//在進(jìn)行抵消之前需要判斷記錄的元素是否有為0情況,因為如果為0//需要更新記錄的元素if(count1 == 0){target1 = e;count1++;continue;}else if(count2 == 0){target2 = e;count2++;continue;}//抵消count1--;count2--;}//再對有可能滿足情況的標(biāo)記元素進(jìn)行一次計數(shù),進(jìn)行驗證int val1 = 0;int val2 = 0;for(auto& e : nums){if(e == target1){val1++;}else if(e == target2){val2++;}}vector<int> ret;if(val1 > nums.size() / 3){ret.emplace_back(target1);}if(val2 > nums.size() / 3){ret.emplace_back(target2);}return ret;} };

總結(jié)

以上是生活随笔為你收集整理的摩尔投票法(力扣- -229. 求众数 II)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩一区二区中文字幕 | 成人国产在线观看 | 欧美精品一区二区三区四区 | 波多野结衣中文字幕一区二区 | 国内成人精品 | 亚洲精品日韩在线观看 | 奶妈的诱惑 | 国产aaaaaa| 中文字幕人妻丝袜乱一区三区 | 中文字幕免费在线观看视频 | 国产女厕一区二区三区在线视 | 国产午夜影院 | 在线免费福利视频 | 曰本女人与公拘交酡 | 免费吃奶摸下激烈视频 | 一区二区三区免费在线观看 | 美女在线播放 | 麻豆精品国产精华精华液好用吗 | www天天操 | 国产视频你懂得 | 九九热免费视频 | 性渴老太作爱 | 床戏高潮做进去大尺度视频 | 精品人妻大屁股白浆无码 | 橹图极品美女无圣光 | 亚洲欧美日韩视频一区 | 欧美日韩三级在线 | 日韩丰满少妇无码内射 | 美国av片 | 涩涩在线观看 | 91免费视频大全 | 精品欧美一区二区久久久 | 最新日韩中文字幕 | 免费日韩av | 国产一区二区在线免费观看 | 91视频在| 无遮挡的裸体按摩的视频 | 午夜视频在线免费看 | 人妻 日韩 欧美 综合 制服 | 视频三区在线 | 男女日屁视频 | 少妇性高潮视频 | 一级黄色a级片 | 亚洲精品777 | 欧美高清一区二区三区四区 | 免费裸体视频网站 | 在线视频一区二区 | 自拍偷拍第五页 | 亚洲精品免费在线 | 一区二区三区爱爱 | 久久婷婷影院 | 日本免费一区二区三区 | 丝袜脚交国产在线观看 | 国产不卡a| 亚洲资源在线 | 黄色日比视频 | 人妻丰满熟妇岳av无码区hd | 国产精品福利在线 | 找个毛片看看 | 日韩精品久久久久久久酒店 | 久热免费视频 | 久久久综合视频 | 一级黄色性生活视频 | 亚洲精品少妇一区二区 | 一级淫片免费看 | 日韩成人av毛片 | 男女床上拍拍拍 | 国产chinasex对白videos麻豆 | 欧美熟妇久久久久 | 一区二区国产精品精华液 | 色av性av丰满av | 800av免费在线观看 | 日本色一区 | 久草福利视频 | 日韩久久一区二区 | 精品久久久久久无码人妻 | 黄色录像片子 | 国产一区二区三区免费 | 91av国产视频 | 中文字幕在线一区二区三区 | 精品久久免费观看 | 欧美做爰xxxⅹ性欧美大片 | 久久久久一区二区三区四区 | 91看片在线播放 | 人人爱国产 | 黄色大片网站在线观看 | 大地资源高清播放在线观看 | 懂色av一区二区三区四区五区 | 亚洲自拍偷拍精品视频 | 日日干日日操 | 亚洲你懂得 | 国产精品成人网站 | 男人的天堂在线 | 日韩视频二区 | 国产亚洲系列 | 狠狠狠狠干 | 免费日韩成人 | 国内偷拍一区 | 欧美性猛片aaaaaaa做受 |