[리트코드] 977, 189
977. Squares of a Sorted Array
나의 풀이
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortedSquares = function (nums) {
return nums.map(v => v ** 2).sort((x, y) => x - y);
};
console.log(sortedSquares([-4, -1, 0, 3, 10]));
Runtime: 120 ms, faster than 58.67% of JavaScript online submissions for Squares of a Sorted Array.
189. Rotate Array
처음 풀이 (런타임 에러)
var rotate = function (nums, k) {
while (k) {
nums.unshift(nums.pop());
k--;
}
return nums;
};
큐처럼 구현하였지만 런타임에러가 났다. (괜히 미디엄이 아닐테지..)
정답 풀이
var rotate = function (nums, k) {
k = k % nums.length;
nums.unshift(...nums.splice(nums.length - k, k));
};
옮겨야할 아이들을 통째로 구해다가, 통째로 unshift 해주었다.
정석 풀이
var rotate = function(nums, k) {
let count = 0;
for (let i = 0; i < nums.length; i++) {
let nextIndex = (i + k)%nums.length;
let previous = nums[i];
while (1) {
let temp = nums[nextIndex];
nums[nextIndex] = previous;
count++;
if(nextIndex === i) {
break;
}
previous = temp;
nextIndex = (nextIndex + k)%nums.length;
}
if (count === nums.length) {
break;
}
}
};
마지막 아이와 처음 아이를 바꿔주는 작업을 k번만큼 반복한다.