想问下各位大佬python的问题
如果有一个列表,其中占比超过一半的元素称之为主要元素,那么如何获取一个列表的主要元素呢?题目给定的列表是:
请根据解题思路进行编程。
nums =
nums.sort()
n = len(nums)
j = 0
for i in nums:
if n % 2 == 0 :
if i == nums and nums == nums :
j += 1
if j >= n // 2 + 1 :
print(i, "为主要元素")
break
elif n % 2 == 1 :
if i == nums:
j += 1
if j > (n //2):
print(i,"为主要元素")
break
else:
print("不存在主要元素")
break
这是我写的代码,输出应该没问题,想问问大佬是否有问题,需要简化吗 如何简化
试试这个:arr =
x = list(set(i for i in arr if arr.count(i) >= (len(arr) >> 1)))
print(x) nums =
nums.sort()
n = len(nums) + 1
main_num = nums
count_ = 0
for i in range(len(nums)):
if main_num != nums:
if count_ >= n//2:# main_num满足条件
continue
elif i+1 <= n//2:# 只要该元素第一个出现的下标不超过n的一半,就认为有机会成为主要元素
main_num = nums
count_ = 1
else:
print("不存在主要元素")
break
else:
count_ += 1
else:
print(main_num, "是主要元素") nums =
for each in set(nums):
if nums.count(each) >= len(nums) // 2 + 1:
print('存在主要元素%s'%each)
break
else:
print("不存在主要元素")
页:
[1]