|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 mumei2018 于 2023-5-3 00:09 编辑
nums = [1, 3, 2, 2, 4, 2, 3, 6, 2,1,3,3]
main_eli = []
lenth = len(nums)//3
found = 0
for i in nums:
count = nums.count(i)
if count >= lenth:
found = 1
if i in main_eli:
continue
else:
main_eli.append(i)
if found ==1:
print(main_eli, 'is the main eliment.')
else:
print('not found.')
21和22回的答案我是读懂了 但21 回的作业我也是用这个方法做的 我这方法会不会有什么问题 怕帖子无法正确显示代码 我还贴了图片 另外作为变量名的英语单词的拼写我没去细扣 就是图懒得切换 有错的话请包含
最后 感谢各位大佬
你好!看了你的代码,这种解决方法是有效的,能够找到出现次数超过数组长度三分之一的元素。这个算法的时间复杂度为 O(n^2),因为需要对数组进行两次遍历(一次是for循环,另一次是count函数)。虽然这种方法并不是最优的,但对于小规模的问题来说,它已经足够了。
这里提供一种更优的方法,使用 Boyer-Moore 投票算法,时间复杂度为 O(n),空间复杂度为 O(1):
def majority_element(nums):
count = 0
candidate = None
for num in nums:
if count == 0:
candidate = num
count += (1 if num == candidate else -1)
return candidate if nums.count(candidate) > len(nums) // 3 else None
对于变量名和代码格式,确实需要注意一下。代码中的英语单词拼写和变量命名规范是非常重要的,这样可以让其他人更容易地理解和维护你的代码。对于 Python,建议遵循 PEP8 编码规范。
希望这对你有所帮助!如果你有其他问题,请随时提问。
|
-
|