求出陣列中出現次數大於一半的數字
def partition(data,start,last):
if data is None:
return None
if start < 0 or last < 0:
return None
if last <= start:
return start
mid_num = data[start]
while start < last:
while start < last and mid_num <= data[last]:
last -= 1
data[start] = data[last]
while start < last and data[start] <= mid_num:
start += 1
data[last] = data[start]
data[start] = mid_num
return start
def find_kth_num(data,k):
if data is None:
return None
if k >= len(data):
return None
start = 0
last = len(data) - 1
index = partition(data,start,last)
while index != k:
if k < index:
last = index - 1
index = partition(data,start,last)
else:
start = index + 1
index = partition(data,start,last)
return data[k]
def more_than_half_num(data):
elem = find_kth_num(data,len(data)//2)
cnt = 0
for _ in data:
if _ == elem:
cnt += 1
if cnt > len(data)//2:
return elem
else:
return None
def main():
data = [5,4,2,2,2]
num = more_than_half_num(data)
print(num)
解法2:
def more_than_half_num2(data):
num = None
times = 0
for item in data:
if times == 0:
num = item
times = 1
elif num == item:
times += 1
elif num != item:
times -= 1
if times > 0:
return num
else:
return None
相關文章
- 查詢陣列中出現次數大於陣列長度一半的數字陣列
- 陣列中出現次數超過一半的數字陣列
- 48 陣列中出現次數超過一半的數字陣列
- JZ-028-陣列中出現次數超過一半的數字陣列
- 每日一練(20):陣列中出現次數超過一半的數字陣列
- 找到陣列中出現特定次數數字的問題陣列
- [劍指offer題解][Java]陣列中出現次數超過一半的數字Java陣列
- Leetcode 劍指 Offer 39. 陣列中出現次數超過一半的數字LeetCode陣列
- JZ-037-數字在排序陣列中出現的次數排序陣列
- 力扣 - 劍指 Offer 39. 陣列中出現次數超過一半的數字力扣陣列
- Matlab tabulate統計數字出現的次數,如果陣列中出現0Matlab陣列
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- js找出陣列中出現最多的元素和次數JS陣列
- 給定一個大小為 n 的陣列,找到其中的眾數。眾數是指在陣列中出現次數大於 ⌊ n/2 ⌋ 的元素。陣列
- 找出陣列中第 k 大的數字及其出現次數陣列
- 統計陣列中各數字(元素)出現的次數陣列
- 找出陣列中元素出現次數超過陣列長度一半的元素陣列
- Matlab 統計陣列中各數字(元素)出現的次數Matlab陣列
- 找出陣列中只出現一次的數字陣列
- 劍指 Offer 56 - I. 陣列中數字出現的次數陣列
- 陣列中每個陣列元素出現的次數陣列
- 輸出字串中出現次數最多的字元和次數字串字元
- 劍指offer之列印超過陣列一半的數字陣列
- JZ-040-陣列中只出現一次的數字陣列
- 在其它數都出現k次的陣列中找到只出現一次的數陣列
- 3229. 使陣列等於目標陣列所需的最少操作次數陣列
- 統計檔案中出現的單詞次數
- 陣列中重複的數字陣列
- LeetCode3270[求出數字答案]LeetCode
- 統計陣列元素中每個元素出現的次數陣列
- js常見演算法(一):陣列去重,打亂陣列,統計陣列各個元素出現的次數, 字串各個字元的出現次數,獲取地址連結的各個引數JS演算法陣列字串字元
- 判斷字串中出現最多的字元,並統計次數字串字元
- 如何查詢總和等於給定數字的整數陣列中的所有對陣列
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 448. 找到所有陣列中消失的數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- JZ-050-陣列中重複的數字陣列