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

2021-09-08 13:09:10 字數 686 閱讀 2402

題目描述

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

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

class

solution

:def

morethanhalfnum_solution

(self, numbers)

:# write code here

candi, count, candi_count = numbers[0]

,1,0

for num in numbers[1:

]:if count ==0:

candi, count = num,

1elif candi == num:

count +=

1else

: count -=

1for num in numbers:

if num == candi:

candi_count +=

1return candi if

2*candi_count >

len(numbers)

else

0

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

題目 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。思路 該題思路還是挺清晰的,首先判斷陣列是否為空,然後對陣列進行排序,如果有乙個數字出現的次數超過陣列長度的一半,那麼該數...

劍指offer 28 陣列中出現了一半的字母

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

全排列問題 劍指offer28

求全排列的步驟 兩步,無重複字元的情況 1.求出所有可能在第乙個位置的陣列,即吧第乙個字元和後面的所有字元交換。2.固定第乙個字元,求後面所有字元的全排列。第2步中的全排列求解用到遞迴。此時,仍把後面的所有字元分成兩部分,後面字元的第乙個字元,以及這個字元之後的所有字元。然後把第乙個字元注意和他後面...