劍指offer——判斷陣列中出現次數過半的數值
阿新 • • 發佈:2018-11-12
根據題目,主要解決兩個問題,一個是判斷出現陣列出現的次數,二是輸出出現次數過半的數值,無則返回0。根據這種情況,腦中第一個出現的就是用字典解決,判斷value,輸出key。
class Solution: def MoreThanHlafNum_Solution(self,numbers): dict={} for i in numbers: if not dict.has_key(i): dict[i]=1 else: dict[i]+=1 if dict[i]>len(numbers)/2.0: return i return 0
另解:
這種方法看起來比較巧,比較難想。如果存在一個次數過半的數值,它的出現的次數一定會比其他數值的總和要多。
class Solution: def MoreThanHlafNum_Solution(self,nunbers): if not numbers: return 0 num=numbers[0] count=1 for i in range(1,len(numbers)): if numbers[i]==num: count+=1 else: count-=1 if count==0: num=numbers[i] count=1 count=0 for j in numbers: if j ==num: count+=1 return num if count>len(numbers)/2.0 else 0