假设您有一个数字数组和一个查询数组:
array = [1,3,5,6,9]
queries = [5,9,3]
Run Code Online (Sandbox Code Playgroud)
我们需要找到所需的操作数,即从数组中加 1 或减 1,以使数组中的所有数字与查询数组中的元素相匹配。
例如:
对于查询 5,将数组所有元素变为 5 所需的运算次数为 abs(1-5) + abs(3-5) + abs(5-5) + abs(6-5) + abs(9-5) ) = 4+2+0+1+4 = 11。
对于查询 9,它将是 21。
对于查询 3,它将是 13。
有没有办法以比 O(len(array) x len(queries)) 更好的时间复杂度来做到这一点?
我在 python 中执行此操作的函数如下
def find_min_costs(array,queries):
for query in queries:
cost = 0
for arr in array:
cost+= abs(arr-query)
print(cost,end = ' ')
Run Code Online (Sandbox Code Playgroud)
但我的代码的时间复杂度是 O(len(array) x len(queries))
我想以更好的时间复杂度来做到这一点,例如 O(len(array))