JavaScript 每日一题---LeetCode 977. 有序数组的平方

题目描述:

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

解题思路:

        给定的数组为整数数组,也就是说会存在负数。最简单的方法就是先将每个数的平方 push 到一个新数组中,再 sort 一下。

另一个思路是,既然是非递减排序,那么边界的数的平方一定大于中间的数(不一定是哪边)。所以我们可以首尾双指针遍历数组,比较哪个数的平方较大,最后将较大的数的平方 unshift 到一个新数组中即可。

完整代码:

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var sortedSquares = function(nums) {
    var ans=[];
    var left=0;
    var right=nums.length-1;
    while(left<=right){
        if(Math.pow(nums[left],2)>=Math.pow(nums[right],2)){
            ans.unshift(Math.pow(nums[left],2));
            left++;
        }
        else{
            ans.unshift(Math.pow(nums[right],2));
            right--;
        }
    }
    return ans;
};

欢迎指正!