首页 > 解决方案 > 有效操作 3d 数组中列表的最佳方法?

问题描述

我在一个 3d 数组中获得了 n 个列表。这些列表代表时间。因此,例如,这些列表之一可能是 (1,4),这意味着 1:00、2:00、3:00、4:00 的“忙碌”。那么对于 3d 数组中的所有 n 个列表,将 (1,4) 转换为 (1,2,3,4) 的有效方法是什么。请记住,n 可能高达 10000。我可能在这里是个白痴,但感谢您的帮助。

///requests is the array being given. eg [(1,4),(2,9),(4,5)]

numberOfRequests=len(requests)
mostTaxi=1
talArray=[]

//Very ineffiecient way of solving current problem    

for x in range(0,numberOfRequests):
    for y in range((requests[x][0]),(requests[x][1])+1):  
        talArray.append(y)

//


busiestTime=max(set(talArray), key = talArray.count)
mostTaxi=talArray.count(busiestTime)

return mostTaxi

'''

标签: arrayspython-3.x

解决方案


如果元组代表(start, end)任务的时间,那么您只需end - start从每个元组中获取(它将代表花费的小时数)并获取最大值。

times = [
   [(1,4),(2,9),(4,5)],
   [(1,4),(1,20),(4,11)]
] 

def calculate_time(t):
  start, end = t
  return end - start

longest = max((max(map(calculate_time, each)) for each in times))
print("The longest task took", longest , "hours")


推荐阅读