Algorithm/Leetcode

[Top Interview 150 - Array / String] 189. Rotate Array

code-bean 2024. 10. 12. 17:04
[Q] [Medium]

Given an integer array nums, rotate the array to the right by k steps, 
where k is non-negative.


Constraints:

1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
0 <= k <= 105

 

  • 일단 rotate 문제니까, deque.rotate(k) 쓰면 된다고 생각했다.
  • 그래서 작성했는데 먹히지 않음.
  • 이번엔 아래와 같이 작성했는데 또 안됨! 왜!
  • 조건들 때문이었다.. 그래서 if 문 추가하고 k가 n 보다 클 수 있어서 k%=n 추가하고 제출
# Wrong Answer

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """

        n = len(nums)
        nums = nums[n-k :] + nums[:-k]
# Answer

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """

        n = len(nums)
        k %= n

        if len(nums) != 1 and k != 0 :
            nums[:] = nums[n-k :] + nums[:-k]