我正试图用Python解决HackerRanks的一个容易评级的问题。我的代码解决了5个测试用例中的4个,但是对于其中一个测试用例,我收到了一条错误消息,说超出了时间限制。请推荐优化此功能的方法。我是python的初学者,仍在努力理解itertools,但它似乎相当复杂
问题陈述: 给定一组鸟类目击事件,其中每个元素代表一个鸟类类型id,确定最常见类型的id。如果发现超过1种类型的ID超过最大数量,请返回它们的最小ID
样本输入:arr=[1,2,3,4,5,4,3,2,1,3,4] 样本输出:3
我当前的代码:
def migratoryBirds(arr):
d={}
arr2=[]
for i in range(len(arr)):
d[arr[i]]=arr.count(arr[i])
for i in d.keys():
if d[i]==max(d.values()):
arr2.append(i)
return(min(arr2))
由于使用
.count()
函数多次遍历整个数组,因此算法速度较慢。在第二个循环中,您还将使用max()函数多次查看字典。这导致了O(N^2)时间复杂度要实现O(N)时间,您应该在数组中只为每个项添加1,然后根据最大总id/min id处理字典:
我也是python中的一个新条目! 我是这样解决的……也许这不是练习的范围,也许这将是您所见过的运行中最糟糕的代码……但它可以运行!:D
相关问题 更多 >
编程相关推荐