Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm danh sách phần tử bình phương theo thứ tự được sắp xếp trong Python

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
  • 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]