def majority_element(a):
return max([(a.count(elem), elem) for elem in set(a)])[1]
編輯
如果存在平局,則傳回最大值。E、 g:a = [1,1,2,2]傳回2。可能不是你想要的,但這是可以改變的。在
編輯2
你給出的僞代碼分為數組1到k包括,k+1到n。你的代碼執行1到k-1,k到結尾,但不确定它是否變化很大?如果你想尊重你給出的算法,你應該:
^{pr2}$
同樣,根據您提供的僞代碼,lcount和{}應該與{}比較,而不是{}:
^{3}$
<3
有人在評論中強調,提供僞代碼解決的不是最常見的,而是出現在50%以上的項目。是以,您的示例輸出确實是正确的。很有可能您的代碼已經按原樣工作了。在
編輯4
如果您想在平局時傳回None,我建議您這樣做:def majority_element(a):
n = len(a)
if n == 1:
return a[0]
if n == 0:
return None
sorted_counts = sorted([(a.count(elem), elem) for elem in set(a)], key=lambda x: x[0])
if len(sorted_counts) > 1 and sorted_counts[-1][0] == sorted_counts[-2][0]:
return None
return sorted_counts[-1][1]