# 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]