五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

騰訊招聘Python程序員面試題目:Python數(shù)據(jù)結(jié)構(gòu)與算法

2023-03-14 15:28 作者:編程小宇e  | 我要投稿



題目的內(nèi)容描述:

春節(jié)期間小明使用微信收到很多個紅包,非常開心。在查看領(lǐng)取紅包記錄時發(fā)現(xiàn),某個紅包金額出現(xiàn)的次數(shù)超過了紅包總數(shù)的一半。請幫小明找到該紅包金額。寫出具體算法思路和代碼實現(xiàn),要求算法盡可能高效。

給定一個紅包的金額數(shù)組gifts及它的大小n,請返回所求紅包的金額。若沒有金額超過總數(shù)的一半,返回0。

測試樣例:

[1,2,3,2,2],5

返回:

2

思路:考慮到題目要求算法盡可能高效,所以放棄使用hashtable計數(shù)比較來做

使用相同則增一計數(shù),相異則減一計數(shù),設(shè)序列首部值為key,count = 1

然后從序列第二個值開始循環(huán),每次循環(huán)元素與key比較,如果相同,則count++

不同則,count--,直到count變?yōu)?1,則考慮此時的元素為key,繼續(xù)從當(dāng)前位置循環(huán)直到序列結(jié)束

需要其他的大型互聯(lián)公司面試題目的朋友可以關(guān)注小編后私信領(lǐng)取

騰訊招聘Python程序員面試題目:Python數(shù)據(jù)結(jié)構(gòu)與算法


例子如下:

例如 4 4 2 3 4

首先,key = 4 ,count = 1,第二個4與key相同,count增加1,變?yōu)?

然后2 3分別與key不同,count減去2,變?yōu)?

最后4與key相同,count++,變?yōu)?

輸出結(jié)果是4

這樣看起來好像沒什么問題,但是如果出現(xiàn)以下情況呢?

例如 4 4 4 3 3 2 2 1 1

首先key = 4 ,count為1,經(jīng)過另外兩個4,key還是4,count變?yōu)?

經(jīng)過 3 3 2 ,key為4,count為0

接著經(jīng)過2 ,key為4,count為-1,此時考慮變換key為2,count為1

接著經(jīng)過1,key為2,count為0

接著經(jīng)過1,key為2,count為-1,此時考慮變換key為1,count為1

所以結(jié)果是1

但是這個序列里1明顯不是超過一半的

這是為什么呢?因為在這有點像 鷸蚌相爭漁翁得利,4 3 2分別爭寵,最后1收了漁網(wǎng)~

那怎么避免呢?

在第一次循環(huán)后將最后的key再次帶入第二次循環(huán),和序列元素比較

為了區(qū)別count,使用flag作為計數(shù)器,初始化為1

當(dāng)遍歷序列時,相同則flag++,不同則flag--

當(dāng)序列比較結(jié)束,看flag是否大于等于1,如果是,則超過一半,輸出key

如果不是,輸出None

騰訊招聘Python程序員面試題目:Python數(shù)據(jù)結(jié)構(gòu)與算法


代碼實現(xiàn)如下:

(gifts用list相關(guān)名稱表示)

騰訊招聘Python程序員面試題目:Python數(shù)據(jù)結(jié)構(gòu)與算法


多個測試數(shù)據(jù):

騰訊招聘Python程序員面試題目:Python數(shù)據(jù)結(jié)構(gòu)與算法


注意list_4 調(diào)用函數(shù)返回值0,即找不到超過一半數(shù)量的數(shù)字~


騰訊招聘Python程序員面試題目:Python數(shù)據(jù)結(jié)構(gòu)與算法的評論 (共 條)

分享到微博請遵守國家法律
页游| 沙雅县| 资中县| 芮城县| 仙游县| 佛山市| 磐安县| 宝兴县| 读书| 札达县| 昌吉市| 麦盖提县| 荃湾区| 五家渠市| 辽阳市| 乌兰浩特市| 蓬安县| 陕西省| 大荔县| 瑞丽市| 丁青县| 泗水县| 兴海县| 南川市| 茌平县| 禄丰县| 聂荣县| 衡南县| 龙南县| 台南市| 崇礼县| 东山县| 犍为县| 郎溪县| 阳城县| 永靖县| 龙口市| 阜新| 河南省| 武陟县| 罗山县|