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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python求众数代码_python-LeetCode-求众数

發布時間:2023/12/10 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python求众数代码_python-LeetCode-求众数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:給定一個大小為 n 的數組,找到其中的眾數。眾數是指在數組中出現次數大于 ? n/2 ? 的元素。

你可以假設數組是非空的,并且給定的數組總是存在眾數。

示例 1:

輸入: [3,2,3]

輸出: 3

示例 2:

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

輸出: 2

眾數——眾數(Mode)是統計學名詞,在統計分布上具有明顯集中趨勢點的數值,代表數據的一般水平(眾數可以不存在或多于一個)。 修正定義:是一組數據中出現次數最多的數值,叫眾數,有時眾數在一組數中有好幾個。用 M 表示。 理性理解:簡單的說,就是一組數據中占比例最多的那個數。

(來自百度)

我的解法:利用字典,計算每一個數字出現的次數,出現次數最大的那個就是要求的眾數,但是根據題目,次數還要大于列表長度的一半,所以有了下面的方法:

class Solution(object):

def majorityElement(self, nums):

"""

:type nums: List[int]

:rtype: int

"""

dict={x:0 for x in nums}

for x in nums:

dict[x]+=1

for x in dict.key():

if dict[x]>len(nums)//2:

return x

這種方法我借鑒了昨天的字典法,利用字典來計數。利用了額外字典空間,遍歷列表一次,字典一次。

當然,昨天的count法也能完成,這題雖然沒有明確要求,但是我們總是要利用更小的時空復雜度來完成算法。

還有一種方法,我是沒想到,我發現大學上久了,那種投機取巧的本事丟了,思維有些不太靈活了,可能是不太動腦子了吧。。

這種方法利用了這樣的方法,將給的列表排序,因為眾數的數量超過一半,所以排序后,中間的數一定是那個眾數。只能說我的腦子不行。

class Solution(object):

def majorityElement(self, nums):

"""

:type nums: List[int]

:rtype: int

"""

nums.sort()

return nums[len(nums)//2]

還有一個我剛學會的方法——摩爾投票法

我借鑒了網上的解釋:摩爾投票法的基本思想很簡單,在每一輪投票過程中,從數組中找出一對不同的元素,將其從數組中刪除。這樣不斷的刪除直到無法再進行投票,如果數組為空,則沒有任何元素出現的次數超過該數組長度的一半。如果只存在一種元素,那么這個元素則可能為目標元素。

https://www.jianshu.com/p/c19bb428f57a

文章寫的Java實現

但是我們不能真的去每次刪除兩個不相同的值,當然如果你要寫也能寫出來,這有個更好的方法:

從第一個數開始count=1,遇到相同的就加1,遇到不同的就減1,減到0就重新換個數開始計數,總能找到最多的那個。——YourBaymax

現在我們來用python來實現它:

class Solution(object):

def majorityElement(self, nums):

"""

:type nums: List[int]

:rtype: int

"""

count=0

now=None

max=len(nums)/2

for i in nums:

if count==0:

now=i

count=1

elif count>max:

return now

elif i==now:

count+=1

else:

count-=1

return now

這種方法是最快的,而且,只用了常數個空間來保存計數和待選眾數。

厲害!!這種方法我看了挺久的,腦子不行了。

總結

以上是生活随笔為你收集整理的python求众数代码_python-LeetCode-求众数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。