Neunomizuの日記

俺だけが俺だけじゃない

# LeetCode Easy 189. Rotate Array

tags: leetcode

問題

イデア

「1次元配列が与えられた時,kだけ右に要素をずらせ」という問題です.右端から右にずらした場合,左端に行きます.

解法

  • kを,kを配列の大きさで割った余りとします.
    • これは配列の大きさと同じ分だけ右にずらすと元の位置に要素が戻るからです.
  • こうしてできたkに関して
    • 配列の前半kに配列の後半kを加えたものを配列に代入すれば求める配列が得られます.

計算量

要素の数を$N$とします.

  • 時間計算量
    • $O(N)$
  • 空間計算量
    • $O(1)$

Python

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