算法每日一更,记录我的成长。
有序数组的平方
力扣题目链接
给你一个按 非递减顺序 排序的整数数组 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]
第四更,今天带来的是有序数组的平方,因为数组是有序的,但是可能存在负值,所以在我们平方之后,数组的最大值就在数组最左边或者是最右边,那个我们就可以采用之前用到的双指针法。
定义一个新的数组res,这个数组的大小应该是和之前的nums数组大小一样的,并且指定last为res的终止位置
if(nums[i] * nums[i] < nums[j] * nums[j]) res[last--] = nums[j]
if(nums[i] * nums[i] > nums[j] * nums[j]) res[last--] = nums[i]
下面展示javaScript版本的代码:
var sortedSquares = function(nums) {
let i=0
let j=nums.length-1
let last = nums.length-1
let res = new Array(last).fill(0)
while(i <= j) {
if(nums[i] * nums[i] < nums[j] * nums[j]) {
res[last--] = nums[j] * nums[j]
j--
} else {
res[last--] = nums[i] * nums[i]
i++
}
}
return res
};
以上就是今天带来的内容,觉得还不错的可以点个赞,有不对的地方也欢迎大佬帮忙斧正