해당 포스팅은 릿코드 977번 Squares of a Sorted Array 풀이를 다룬다. 문제 링크
코드는 javascript로 작성하였으며 투포인터로 풀었다.
내림차순으로 정렬된 정수 배열 숫자가 주어지면 내림차순으로 정렬된 각 숫자의 제곱 배열을 반환한다.
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].
해당 문제는 투포인터를 이용해 O(n)으로 풀이할 수 있다.
input이 sorted되어 있음을 이용해 양쪽에서 값을 비교해서 하나씩 값을 넣어주면 된다.
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortedSquares = function(nums) {
let [s, e] = [0, nums.length-1];
const result = [];
for (let i = nums.length - 1; i >= 0; i--) {
const left = nums[s];
const right = nums[e];
if (Math.abs(left) > Math.abs(right)) {
result[i] = Math.abs(left) ** 2;
s++;
} else {
result[i] = Math.abs(right) ** 2;
e--;
}
}
return result;
};