给定一个n个整型元素的数组a,其中有一个元素出现次数超过n / 2,求这个元素
思路:
设置一个当前值和当前值的计数器,初始化当前值为数组首元素,计数器值为1,然后从第二个元素开始遍历整个数组,对于每个被遍历到的值a[i]
1 如果a[i]==currentValue,则计数器值加1
2 如果a[i] != currentValue, 则计数器值减1,如果计数器值小于0,则更新当前值为a[i],并将计数器值重置为1
data_list = [5, 5, 12, 3, 4, 5, 5, 5, 6, 5]
def find_num(data_list):
cur_value = data_list[0]
count = 1
for item in data_list[1:]:
if cur_value == item:
count = count + 1
else:
count = count - 1
if count < 0:
cur_value = item
count = 1
return cur_value
print(find_num(data_list))
$ python3.6 find_num.py
5