有序数组的平方——双指针
2026/6/26 10:33:14 网站建设 项目流程

给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

示例 1:

输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100]

示例 2:

输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]

思路

新数组的最大值,不是来自于左端,就是来自于右端。所以可以使用双指针。

不停将当前的最大值放入数组,再逆序就是从小到大。

from typing import List class Solution: def sortedSquares(self, nums: List[int]) -> List[int]: result = [] left, right = 0, len(nums) - 1 while left <= right: if nums[left] ** 2 > nums[right] ** 2: result.append(nums[left]**2) left += 1 else: result.append(nums[right]**2) right -= 1 result.reverse() return result

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询