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

歡迎訪問 生活随笔!

生活随笔

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

python

用Python找出数组中出现次数超过一半的数

發布時間:2025/3/20 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Python找出数组中出现次数超过一半的数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。

計數+比較

不考慮效率,采用最簡單的辦法,遍歷數組,使用 List 的 count() 方法統計元素出現的次數:

def more_than_half_num(arr):half = len(arr) // 2for i in arr:if arr.count(i) > half:return ireturn None

構造一個map,key為元素的值,value為元素出現的次數,然后遍歷map找到目標元素:

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def more_than_half_num(arr):dict = {}for i in arr:if i in dict:dict[i] += 1else:dict[i] = 1half = len(arr) // 2for k, v in dict.items():if v > half:return kreturn None

排序+中位數

數組排序后,如果符合條件的數存在,則一定是數組中間那個數??墒褂门判蛩惴▽到M進行排序,然后求排序后數組的中間數 + 判斷中間數出現次數是否超過數組的一半。下面以快速排序為例:

def part_sort(arr, left, right):key = rightwhile left < right:while left < right and arr[left] <= arr[key]:left += 1while left < right and arr[right] >= arr[key]:right -= 1arr[left], arr[right] = arr[right], arr[left]print(arr)arr[left], arr[key] = arr[key], arr[left]return left def quick_sort(arr, left, right):if left >= right:returnindex = part_sort(arr, left, right)quick_sort(arr, left, index - 1)quick_sort(arr, index, right) def more_than_half_num(arr):length = len(arr)quick_sort(arr, 0, length - 1)res = arr[length // 2]if arr.count(res) > length // 2:return reselse:return None

一次遍歷

數組中有一個數字出現的次數超過數組長度的一半,也就是說出現的次數比其他所有數字出現次數的和還要多。因此我們可以考慮在遍歷數組的時候利用兩個輔助變量,一個記錄數字出現的次數,一個記錄數字。

  • 當我們遍歷到下一個數字的時候,如果下一個數字和我們之前保存的數字相同,則次數加1;
  • 如果下一個數字和我們之前保存的數字不同,則次數減1。
  • 如果次數為零,我們需要保存下一個數字,并把次數設為1。
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def more_than_half_num(arr):res = arr[0]cnt = 1for i in range(1, len(arr)):if arr[i] == res:cnt += 1else:cnt -= 1if cnt == 0:res = arr[i]cnt = 1if arr.count(res) > len(arr)//2:return reselse:return None

總結

以上是生活随笔為你收集整理的用Python找出数组中出现次数超过一半的数的全部內容,希望文章能夠幫你解決所遇到的問題。

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