mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-16 23:16:26 +00:00
63 lines
1.4 KiB
JavaScript
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;
|
|
};
|