劍指offer 陣列中出現次數超過一半的數字

2021-08-20 20:58:26 字數 715 閱讀 3874

陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。

用乙個變數記錄當前數字出現的次數,下乙個數字不同時變數減一,否則加一。

# -*- coding:utf-8 -*-

class

solution:

defmorethanhalfnum_solution

(self, numbers):

# write code here

count = 0

prenum = 0

for i, v in enumerate(numbers):

if i == 0:

count = 1

prenum = v

continue

if v != prenum:

count -= 1

else: count += 1

if count == 0:

prenum = v

count = 1

count = 0

for i in numbers:

if i == prenum: count += 1

return prenum if count > len(numbers) / 2

else

0

劍指offer 陣列在排序陣列中出現的次數

記錄次數,直接用data.count k 也通過了。或者常規演算法,出現有序用二分查詢。class solution def getnumberofk self,data,k write code here if len data 0 return 0 count 0 low 0 high len ...

劍指offer第39 陣列中出現次數超過一半的數字

陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。coding utf 8 classsolution defmorethanhalfnum solution self numb...

劍指Offer 028陣列中出現次數超過一半的陣列

028陣列 現次數超過一半的陣列 題目 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列 現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0 方法 map統計法 思路 遍歷陣列,用map來記錄每個數出現的次數,最後再遍歷map查詢是...