支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,其所在位序成为支配点;
比如 a = [3, 3, 1, 2, 3]; 3为支配数,0,1,4分别为支配点;
要求:返回任何一个支配点
def balance(thy_list):
num = len(thy_list)
balance_dict = {}
index_list = []
for i in range(num):
if thy_list[i] in balance_dict:
balance_dict[thy_list[i]] += 1
else:
balance_dict[thy_list[i]] = 1
for key, value in balance_dict.items():
if value > num/2:
for m, n in enumerate(thy_list):
if n == key:
index_list.append(m)
return "支配数:{0}, 支配点列表:{1}" .format(key, index_list)
return '无支配数'
if __name__ == '__main__':
print(balance([3, 3, 1, 2, 3]))
print(balance([3, 3, 1, 2, 5]))
print(balance([3, 3, 1, 2, 5, 6, 5, 9, 9, 8, 9]))
print(balance([9, 9, 1, 9, 5, 6, 5, 9, 9, 8, 9]))
# 结果:
# 支配数:3, 支配点列表:[0, 1, 4]
# 无支配数
# 无支配数
# 支配数:9, 支配点列表:[0, 1, 3, 7, 8, 10]