ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

有序数组的平方——双指针

有序数组的平方——双指针

给你一个按非递减顺序排序的整数数组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
返回列表