低于cod的算法或性能改进

2024-09-28 05:27:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我为面试准备网站上的一个问题编写了以下程序。我想知道这段代码是否有效,或者如果效率不高我们如何改进

我的问题

编写一个函数,该函数采用整数flight\ u length(以分钟为单位)和整数movie\ u length(以分钟为单位)的列表,并返回一个布尔值,指示movie\ u length中是否有两个数字的和等于flight\ u length

构建功能时:

假设你的用户只看两部电影 不要让你的用户看同一部电影两次 优化运行时内存

def movie_length(fligh_length,movietimes):
  newmovietimes =[]
  for time in movietimes[0::]:
    if time not in newmovietimes:
      newmovietimes.append(time)
    else:
      print("movie times are equal")
  if fligh_length == sum(newmovietimes):
    return print("you can watch")
  else:
    return 

print("you can't watch")


movie_length(11,[8,2])

Tags: 函数用户inif电影time单位整数
1条回答
网友
1楼 · 发布于 2024-09-28 05:27:43

使用newmovietimes = set(movietimes)将时间减少到唯一时间的循环肯定更有效,但实际上这是一个bug;如果有两部5分钟的电影,你可以在10分钟内连续观看

如果我理解正确,你的代码并不能解决全部问题;您应该从电影时间列表中找到两部电影,如果有多个满足约束的组合,请将它们全部提出。就像(10, [4, 5, 6, 5])你应该找到6+4和5+5的组合

(最后您只返回一个布尔值来表示是否找到了答案,因此您可以在找到答案后立即退出;但是,如果需要的话,您的代码应该可以很容易地扩展以找到所有的排列—这就是完全解决这个问题所需要的。)

相关问题 更多 >

    热门问题