要求:寫(xiě)一個(gè)函數(shù),傳入一個(gè)有若干個(gè)整數(shù)的列表,該列表中某個(gè)元素出現(xiàn)的次數(shù)超過(guò)了50%,返回這個(gè)元素。
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
點(diǎn)評(píng):LeetCode上的題目,在Python面試中出現(xiàn)過(guò),利用元素出現(xiàn)次數(shù)超過(guò)了50%這一特征,出現(xiàn)和temp相同的元素就將計(jì)數(shù)值加1,出現(xiàn)和temp不同的元素就將計(jì)數(shù)值減1。
如果計(jì)數(shù)值為0,說(shuō)明之前出現(xiàn)的元素已經(jīng)對(duì)最終的結(jié)果沒(méi)有影響,用temp記下當(dāng)前元素并將計(jì)數(shù)值置為1。最終,出現(xiàn)次數(shù)超過(guò)了50%的這個(gè)元素一定會(huì)被賦值給變量temp。