Files
leetcode/work/Easy/Array/977.squares-of-a-sorted-array.js
T

63 lines
1.4 KiB
JavaScript

/*
* 977. Squares of a Sorted Array
* Difficulty: Easy
* https://leetcode.com/problems/squares-of-a-sorted-array/
*
* ──────────────────────────────────────────────────
*
* Given an integer array nums sorted in non-decreasing order, return an
* array of the squares of each number sorted in non-decreasing order.
*
*
*
* Example 1:
*
* Input: nums = [-4,-1,0,3,10]
* Output: [0,1,9,16,100]
* Explanation: After squaring, the array becomes [16,1,0,9,100].
* After sorting, it becomes [0,1,9,16,100].
*
* Example 2:
*
* Input: nums = [-7,-3,2,3,11]
* Output: [4,9,9,49,121]
*
*
*
* Constraints:
*
* • 1 <= nums.length <= 10^4
*
* • -10^4 <= nums[i] <= 10^4
*
* • nums is sorted in non-decreasing order.
*
*
*
* Follow up: Squaring each element and sorting the new array is very
* trivial, could you find an O(n) solution using a different approach?
*/
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortedSquares = function(nums) {
let n = nums.length;
let ans = new Array(nums.length);
let left = 0, right = nums.length - 1;
for (let i = n -1; i >= 0; i--){
let square;
if(Math.abs(nums[left]) < Math.abs(nums[right])){
square = nums[right];
right--;
}else{
square = nums[left];
left++;
}
ans[i] = square*square;
}
return ans;
};