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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

如何判断数组所有数都不等于一个数_【每日算法Day 91】求解数组中出现次数超过1/3的那个数

發(fā)布時間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何判断数组所有数都不等于一个数_【每日算法Day 91】求解数组中出现次数超过1/3的那个数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接

LeetCode 229. 求眾數(shù) II[1]

題目描述

給定一個大小為

的數(shù)組,找出其中所有出現(xiàn)超過 次的元素。

說明:

  • 要求算法的時間復(fù)雜度為 ,空間復(fù)雜度為 。

示例1

輸入: [3,2,3] 輸出: 3

示例2

輸入: [1,1,1,3,3,2,2,2] 輸出: [1,2]

題解

這是求解眾數(shù)的升級版:【每日算法Day 90】5種方法:求解數(shù)組中出現(xiàn)次數(shù)超過一半的那個數(shù)[2] 但是這題沒有保證一定存在滿足條件的數(shù),不過不要緊。

首先可以肯定最多有兩個數(shù)的數(shù)量超過 1/3 ,這個就不用我過多解釋了吧。然后我們只需要找出出現(xiàn)次數(shù)最多的兩個數(shù),看它倆次數(shù)是否超過 1/3 就行了。

那么怎么找呢?如果存在某個數(shù)超過 1/3 ,那我們每次刪掉三個不同的數(shù),直到最后沒法刪,最后剩下的數(shù)一定有這個超過 1/3 的數(shù)。原因很簡單,因?yàn)槊縿h一次最多刪掉一個這個數(shù),而刪除最多 1/3 數(shù)組長度次之后所有數(shù)都被刪光了,但是這個數(shù)還剩下一點(diǎn)。

所以我們用兩個變量 cand1 和 cand2 表示兩個候選人,cnt1 和 cnt2 表示兩個候選人數(shù)量。那么如果兩個候選人有一個和當(dāng)前數(shù) x 相同,對應(yīng)的數(shù)量就加一。否則的話如果如果有某個候選人為空,就讓 x 頂替成為新的候選人。否則的話就說明兩個候選人都有,并且 x 和它倆都不相同,那么就同時刪除三個不同的數(shù),也就是兩個候選人數(shù)量各減一,同時刪去 x 。

最后判斷兩個候選人數(shù)量是否超過了 1/3 就行了。

這里關(guān)鍵點(diǎn)就在于,每次刪除三個不同的數(shù),判斷最后剩下的數(shù)是否符合題意就行了。

代碼

c++

class Solution { public:vector<int> majorityElement(vector<int>& nums) {int n = nums.size();int cand1 = 0, cand2 = 0, cnt1 = 0, cnt2 = 0;for (auto x : nums) {if (cand1 == x) {cnt1++;} else if (cand2 == x) {cnt2++;} else if (!cnt1) {cand1 = x;cnt1++;} else if (!cnt2) {cand2 = x;cnt2++;} else {cnt1--;cnt2--;}}cnt1 = cnt2 = 0;for (auto x : nums) {if (x == cand1) cnt1++;else if (x == cand2) cnt2++;}vector<int> res;if (cnt1 > n/3) res.push_back(cand1);if (cnt2 > n/3) res.push_back(cand2);return res;} };

python

class Solution:def majorityElement(self, nums: List[int]) -> List[int]:n = len(nums)cand1, cand2, cnt1, cnt2 = 0, 0, 0, 0for x in nums:if cand1 == x:cnt1 += 1elif cand2 == x:cnt2 += 1elif cnt1 == 0:cand1 = xcnt1 = 1elif cnt2 == 0:cand2 = xcnt2 = 1else:cnt1 -= 1cnt2 -= 1cnt1 = cnt2 = 0for x in nums:if x == cand1:cnt1 += 1elif x == cand2:cnt2 += 1res = []if cnt1 > n//3:res.append(cand1)if cnt2 > n//3:res.append(cand2)return res 關(guān)注【算法碼上來】,每日算法干貨馬上就來!

參考資料

[1]

LeetCode 229. 求眾數(shù) II: https://leetcode-cn.com/problems/majority-element-ii/

[2]

【每日算法Day 90】5種方法:求解數(shù)組中出現(xiàn)次數(shù)超過一半的那個數(shù): https://godweiyang.com/2020/04/04/leetcode-inteview-39/

總結(jié)

以上是生活随笔為你收集整理的如何判断数组所有数都不等于一个数_【每日算法Day 91】求解数组中出现次数超过1/3的那个数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲精品在线网站 | 浴室里强摁做开腿呻吟男男 | 亚洲欧美视频二区 | 久久国产精品波多野结衣av | 精品无码人妻一区二区免费蜜桃 | 99视频观看 | 久久11 | 国产精品国产三级国产专区52 | 一区二区精彩视频 | 日韩欧美视频一区二区 | 狼人综合网 | 亚洲调教 | 成人免费在线视频网站 | 无码人妻av一区二区三区波多野 | 欧美50p| 欧美日韩国 | 国产精品久久久久久一区二区 | 国产女在线 | 人妻妺妺窝人体色www聚色窝 | 成年网站免费在线观看 | 尤物视频最新网址 | 日韩精品1区2区 | 黄色最新网址 | aaaa黄色片 | 绯色av一区二区 | 永久在线视频 | 亚洲色欲色欲www | 开心激情播播网 | 亚洲涩网 | 无套爆插| 九九免费精品视频 | 午夜精品影院 | 69色视频 | 国产精品第二十页 | 国产日产精品一区二区三区 | 国产精品天天操 | 久久成人a毛片免费观看网站 | avtt亚洲| 成人精品免费在线观看 | 一区不卡在线观看 | 欧美视频在线观看一区二区 | 亚洲国产日本 | 一本一道波多野结衣一区二区 | 91视频一区二区 | 中文毛片无遮挡高潮免费 | 超碰在线进入 | 中文字幕乱码免费 | 国产精品91在线 | 国产网红主播精品av | 国产欧美综合一区二区三区 | 国产美女又黄又爽又色视频免费 | 久久久少妇 | 射射射综合网 | 亚洲AV无码国产精品播放在线 | 国产18毛片| 在线观看视频一区 | 激情视频一区 | 日本无遮羞调教打屁股网站 | 熟妇人妻无码xxx视频 | 69国产精品视频 | 美女被草出白浆 | 亚洲av无码一区二区二三区 | 青青青国产视频 | 黄色一级片免费看 | 色av影院| 亚洲国产精品va在线 | 日韩精品人妻无码一本 | 国产av一区二区三区精品 | 日韩毛片一区二区三区 | 大伊人久久| 国产免费av一区二区三区 | 老女人做爰全过程免费的视频 | 麻豆国产一区二区三区四区 | 黄色国产视频网站 | 黑白配高清国语在线观看 | 无套内谢88av免费看 | 日韩人妻精品一区二区 | 色爱区综合 | 操女人免费视频 | 欧美日韩高清一区二区 | 国产精品成人3p一区二区三区 | 91久久国语露脸精品国产高跟 | 免费看黄色一级视频 | 亚洲av久久久噜噜噜熟女软件 | 91狠狠综合 | 小sao货大ji巴cao死你 | 日韩美女黄色片 | 精品播放| www.haoav| 九色在线观看 | 催眠美妇肉奴系统 | 乱子伦视频在线看 | 六月丁香激情网 | 久久久久久国产精品一区 | 一区二区成人在线观看 | av免费不卡 | 中文字幕av影院 | 日本免费在线观看视频 | 国模私拍一区二区三区 |