20201016
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
输入:[-4,-1,0,3,10]
输出:[0,1,9,16,100]
输入:[-7,-3,2,3,11]
输出:[4,9,9,49,121]
思路
先遍历求平方(注意取绝对值),再排序
不知道本题题目描述时为什么要将非递减,而不直接讲递增,这样增加了理解题意的难度
抛砖引玉
/**
* @param {number[]} A
* @return {number[]}
*/
var sortedSquares = function(A) {
return A.map((i) => Math.abs(i * i)).sort((a, b) => a - b)
}
本题循环求平方的逻辑可以忽略,主要考察的应该是数组排序的问题
只是本题因为涉及求平方,所以排序可以借助求平方的循环完成:
/**
* @param {number[]} A
* @return {number[]}
*/
var sortedSquares = function(A) {
let len = A.length,
_result = [],
left = 0,
right = len - 1,
index = len - 1
while (left <= right) {
if (A[left] * A[left] > A[right] * A[right]) {
_result[index] = A[left] * A[left]
++i
} else {
_result[index] = A[right] * A[right]
--right
}
--index
}
return _result
}
博客: 前端小书童
每天的每日一题,写的题解会同步更新到公众号一天一大 lee 栏目 欢迎关注留言
公众号:前端小书童