技术支持 东莞网站建设母婴护理,计算机网络 网站,万泉河网站建设,安徽建网站一、题目
给你一个按 非递减顺序 排序的整数数组 nums#xff0c;返回 每个数字的平方 组成的新数组#xff0c;要求也按 非递减顺序 排序。
示例 1#xff1a;
输入#xff1a;nums [-4,-1,0,3,10]
输出#xff1a;[0,1,9,16,100]
解释#xff1a;平方后#xff0c…一、题目
给你一个按 非递减顺序 排序的整数数组 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]
二、分析
新创建一个数组使用双指针的方法——左右指针
每次都对指向的两个元素的平方作比较平方大的放到新数组的最后一个位置。
循环的截止条件是ij
当左指针的数平方大时对新数组的下标操作对左指针操作
当右指针的数平方大时同理。
当平方相等时装那个都一样。
三、代码
class Solution(object):def sortedSquares(self, nums)::type nums: List[int]:rtype: List[int]result[0] * len(nums)#定义空列表klen(nums)-1#定义最右边的下标i0;#代表从左向右的下标jk;#代表从右向左的下标while ij:if nums[i]*nums[i]nums[j]*nums[j]:result[k] nums[i]*nums[i]k-1i1else:result[k] nums[j]*nums[j]k-1j-1return result