题目
给你一个已经排好序 的整数数组 和整数 、 、 。对于数组中的每一个元素 ,计算函数值 ,请 按升序返回数组 。
解题
在时间复杂度为解决问题
python
def sortTransformedArray(nums, a, b, c):
def f(x):
return a * x * x + b * x + c
n = len(nums)
result = [0] * n
left, right = 0, n - 1
index = n - 1 if a >= 0 else 0
while left <= right:
left_val = f(nums[left])
right_val = f(nums[right])
if a >= 0:
if left_val > right_val:
result[index] = left_val
left += 1
else:
result[index] = right_val
right -= 1
index -= 1
else:
if left_val < right_val:
result[index] = left_val
left += 1
else:
result[index] = right_val
right -= 1
index += 1
return result
nums = [-4, -2, 2, 4]
a, b, c = 1, 3, 5
print(sortTransformedArray(nums, a, b, c))
nums = [-4, -2, 2, 4]
a, b, c = -1, 3, 5
print(sortTransformedArray(nums, a, b, c))
[3, 9, 15, 33]
[-23, -5, 1, 7]