要求:寫一個函數,傳入一個有若干個整數的列表,該列表中某個元素出現的次數超過了50%,返回這個元素。
def more_than_half(items): temp, times = None, 0 for item in items: if times == 0: temp = item times += 1 else: if item == temp: times += 1 else: times -= 1 return temp
點評:LeetCode上的題目,在Python面試中出現過,利用元素出現次數超過了50%這一特征,出現和temp相同的元素就將計數值加1,出現和temp不同的元素就將計數值減1。
如果計數值為0,說明之前出現的元素已經對最終的結果沒有影響,用temp記下當前元素并將計數值置為1。最終,出現次數超過了50%的這個元素一定會被賦值給變量temp。