본문 바로가기

리트코드/midium

[리트코드] 189. Rotate Array - js

반응형

1. 문제

https://leetcode.com/problems/rotate-array/

 

Rotate Array - LeetCode

Can you solve this real interview question? Rotate Array - Given an integer array nums, rotate the array to the right by k steps, where k is non-negative.   Example 1: Input: nums = [1,2,3,4,5,6,7], k = 3 Output: [5,6,7,1,2,3,4] Explanation: rotate 1 step

leetcode.com

2. 코드

이 문제의 첫번째 핵심은 파라미터로 들어온 nums 배열을 반환하는 것이다. 새로운 배열을 반환하면 오답처리 된다! 주석을 잘 볼 것.

두번째 핵심은, nums의 길이보다 k가 더 큰 경우를 고려해야 한다는 것이다.

예를 들어, nums는 [1,2] 인데 k가 5라면?

[2,1] -> [1,2] -> [2,1] -> [1,2] -> [2,1]

k가 1이 되고, [2]을 자르고 남은 nums 배열 안 요소 [1] 앞에 unshift를 통해 [2]를 붙혀 최종적으로 [2,1] 을 리턴한다.

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var rotate = function (nums, k) {
  k %= nums.length;
  nums.unshift(...nums.splice(nums.length - k));
  
  return nums;
};
반응형