Python程序:按排序顺序查找平方元素列表


假设我们有一个名为nums的数字列表,其中元素按升序排列,我们需要对元素进行平方,并按排序顺序返回结果。

因此,如果输入类似于nums = [-8, -3, 0, 5, 6],则输出将为[0, 9, 25, 36, 64]

为了解决这个问题,我们将遵循以下步骤:

  • n := nums的大小
  • l := 0
  • r := n - 1
  • index := n - 1
  • res := 一个与nums大小相同的列表,并将其填充为0
  • 当index >= 0时,执行:
    • 如果|nums[l]| > |nums[r]|,则
      • res[index] := nums[l] * nums[l]
      • l := l + 1
    • 否则,
      • res[index] := nums[r] * nums[r]
      • r := r - 1
    • index := index - 1
  • 返回res

示例

让我们看看下面的实现,以便更好地理解:

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]

更新于:2021年10月14日

560 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告