一、题目
给你一个按 非递减顺序 排序的整数数组 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]
二、分析
新创建一个数组,使用双指针的方法——左右指针
每次都对指向的两个元素的平方作比较,平方大的放到新数组的最后一个位置。
循环的截止条件是i<=j
当左指针的数平方大时,对新数组的下标操作,对左指针操作;
当右指针的数平方大时,同理。
当平方相等时,装那个都一样。
三、代码
class Solution(object):def sortedSquares(self, nums):""":type nums: List[int]:rtype: List[int]"""result=[0] * len(nums)#定义空列表k=len(nums)-1#定义最右边的下标i=0;#代表从左向右的下标j=k;#代表从右向左的下标while i<=j:if nums[i]*nums[i]>nums[j]*nums[j]:result[k] =nums[i]*nums[i]k-=1i+=1else:result[k] =nums[j]*nums[j]k-=1j-=1return result