我需要一些问题的帮助。假设你有一个排序数组“A”,它有“N”个元素和两个整数“X”和“Y”。现在要求两个人找到“A”中的元素数量,你必须用“X”代替,这样数组“A”的总和小于“Y”。使用以下技术可以在O(n ^ 2)中轻松解决给定的问题。(仅针对此的代码片段是特定操作)。
sum = None
count = None
for i in range(N):
for j in range(i):
A[j] = X
count += 1
for k in range(N):
sum += A[k]
if sum==Y:
print(count)
count = 0
break
但我希望以更有效的方式做到这一点,有人可以建议一种更有效的方式吗?提前致谢
由于您的数组已排序,您可以:
整个事物在O(n)中运行,因为A是有序的,最大/下一个最大可以在O(1)中找到