Given an integer array nums sorted in non-decreasing order,
eturn an array of the squares of each number sorted in non-decreasing order.
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]
var sortedSquares = function(nums) {
let low = 0;
let high = nums.length - 1;
let output = [];
while(low <= high) {
if (nums[low]**2 > nums[high]**2) {
output.push(nums[low]**2);
low++;
} else {
output.push(nums[high]**2);
high--;
}
}
return output.reverse();
};
기본적으로 배열은 마지막에 푸시되기 때문이다.
두 포인터의 값을 비교해 큰 수부터 푸시하면 자연스럽게 내림차순으로 정렬이된다.
하지만 작은 수부터 푸시하면 가장 최근에 비교한 더 작은 값을 그 이전, 가장 첫번째 인덱스에 넣어야 한다.
해도 되지만, 굳이 다른 메서드를 써야하기 때문에 그냥 간단히 푸시하고 마지막에 역순으로 정렬해주었다.