From 6b76ad5975d472a74bc0533ac05bcc455da82c0b Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Wed, 19 Aug 2026 10:55:56 -0400 Subject: [PATCH] feat(problems): add solution for LeetCode 977 squares of a sorted array --- .../Array/977.squares-of-a-sorted-array.js | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 work/Easy/Array/977.squares-of-a-sorted-array.js diff --git a/work/Easy/Array/977.squares-of-a-sorted-array.js b/work/Easy/Array/977.squares-of-a-sorted-array.js new file mode 100644 index 0000000..811e140 --- /dev/null +++ b/work/Easy/Array/977.squares-of-a-sorted-array.js @@ -0,0 +1,62 @@ +/* + * 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; +};