Giả sử chúng ta có một danh sách các số gọi là nums, trong đó các phần tử được sắp xếp theo thứ tự tăng dần, chúng ta phải bình phương các phần tử và trả về kết quả theo thứ tự đã sắp xếp.
Vì vậy, nếu đầu vào là nums =[-8, -3, 0, 5, 6], thì đầu ra sẽ là [0, 9, 25, 36, 64]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- n:=kích thước của nums
- l:=0
- r:=n - 1
- index:=n - 1
- res:=một danh sách có kích thước giống như nums và điền nó bằng 0
- while index> =0, do
- nếu | nums [l] |> | nums [r] |, thì
- res [index]:=nums [l] * nums [l]
- l:=l + 1
- nếu không,
- res [index]:=nums [r] * nums [r]
- r:=r - 1
- index:=index - 1
- nếu | nums [l] |> | nums [r] |, thì
- trả lại res
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(nums): n = len(nums) l = 0 r = n - 1 index = n - 1 res = [0 for i in range(len(nums))] while index >= 0: if abs(nums[l]) > abs(nums[r]): res[index] = nums[l] * nums[l] l += 1 else: res[index] = nums[r] * nums[r] r -= 1 index -= 1 return res nums = [-8, -3, 0, 5, 6] print(solve(nums))
Đầu vào
[-8, -3, 0, 5, 6]
Đầu ra
[0, 9, 25, 36, 64]