1370607278 发表于 2022-1-18 20:42:13

想问下各位大佬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



这是我写的代码,输出应该没问题,想问问大佬是否有问题,需要简化吗 如何简化

傻眼貓咪 发表于 2022-1-18 21:27:05

试试这个:arr =
x = list(set(i for i in arr if arr.count(i) >= (len(arr) >> 1)))
print(x)

大马强 发表于 2022-1-18 21:44:07

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, "是主要元素")

冬雪雪冬 发表于 2022-1-18 21:48:15

nums =
for each in set(nums):
    if nums.count(each) >= len(nums) // 2 + 1:
      print('存在主要元素%s'%each)
      break
else:
    print("不存在主要元素")
页: [1]
查看完整版本: 想问下各位大佬python的问题