真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c++中摩爾投票法如何使用

這篇“c++中摩爾投票法如何使用”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“c++中摩爾投票法如何使用”文章吧。

成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)耿馬,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

算法:

 典型的摩爾投票法使用場(chǎng)景

 摩爾投票法分為兩個(gè)階段:抵消階段和計(jì)數(shù)階段。

1. 抵消階段:兩個(gè)不同投票進(jìn)行對(duì)坑,并且同時(shí)抵消掉各一張票,如果兩個(gè)投票相同,則累加可抵消的次數(shù);2. 計(jì)數(shù)階段:在抵消階段最后得到的抵消計(jì)數(shù)只要不為0,那這個(gè)候選人是有可能超過一半的票數(shù)的, 為了驗(yàn)證,則需要遍歷一次,統(tǒng)計(jì)票數(shù),才可確定。 備注:對(duì)于1/3,1/4.....1/n,做法就是設(shè)置n-1個(gè)投票候選人,采用摩爾投票的方法進(jìn)行操作。

題目1: 超過半數(shù)的多數(shù)元素

代碼實(shí)現(xiàn):

func majorityElement(nums []int) int {    tmp,count := 0,0    for _,num:=range nums {        if count == 0 {            tmp = num        }        if num == tmp {            count++        } else {            count--        }    }    return tmp}// 算法:數(shù)組里面有一個(gè)數(shù)超過一半數(shù)量,// 那么可以用這個(gè)數(shù)作為標(biāo)示,這個(gè)數(shù)就+1,不是這個(gè)數(shù)就-1,最后剩余的數(shù)就是所求

題目2: 求眾數(shù)

代碼實(shí)現(xiàn):

func majorityElement(nums []int) []int {  // 創(chuàng)建返回值  var res = make([]int, 0)  if nums == nil || len(nums) == 0 {    return res  }
 // 初始化兩個(gè)候選人 candidate,以及他們的計(jì)數(shù)票  cand1 := nums[0]  count1 := 0  cand2 := nums[0]  count2 := 0
 //摩爾投票法  // 配對(duì)階段  for _, num := range nums {    // 投票    if cand1 == num {      count1++      continue    }    if cand2 == num {      count2++      continue    }
   if count1 == 0 {      cand1 = num      count1++      continue    }    if count2 == 0 {      cand2 = num      count2++            continue    }
   count1--    count2--  }  // 計(jì)數(shù)階段  count1 = 0  count2 = 0  for _, num := range nums {    if cand1 == num {      count1++    } else if cand2 == num {      count2++    }  }
 if count1 > len(nums)/3 {    res = append(res, cand1)  }  if count2 > len(nums)/3 {    res = append(res, cand2)  }  return res}// 算法:摩爾投票法的應(yīng)用// 因?yàn)槭?/3,所以采用2個(gè)候選人來進(jìn)行抉擇。

以上就是關(guān)于“c++中摩爾投票法如何使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁名稱:c++中摩爾投票法如何使用
分享URL:http://weahome.cn/article/piigdi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部