สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums ซึ่งองค์ประกอบต่างๆ จะถูกเรียงลำดับจากน้อยไปหามาก เราต้องยกกำลังสององค์ประกอบและส่งคืนผลลัพธ์ตามลำดับการจัดเรียง
ดังนั้น หากอินพุตเท่ากับ nums =[-8, -3, 0, 5, 6] เอาต์พุตจะเป็น [0, 9, 25, 36, 64]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- n :=ขนาดของ nums
- l :=0
- r :=n - 1
- ดัชนี :=n - 1
- res :=รายการขนาดเท่ากับ nums และเติมด้วย 0
- ในขณะที่ดัชนี>=0, ทำ
- ถ้า |nums[l]|> |nums[r]| แล้วก็
- res[ดัชนี] :=nums[l] * nums[l]
- l :=l + 1
- มิฉะนั้น
- res[index] :=nums[r] * nums[r]
- r :=r - 1
- ดัชนี :=ดัชนี - 1
- ถ้า |nums[l]|> |nums[r]| แล้วก็
- ผลตอบแทน
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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))
อินพุต
[-8, -3, 0, 5, 6]
ผลลัพธ์
[0, 9, 25, 36, 64]