Given an integer array nums, rotate the array to the right by k steps, where k is non-negative.
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
한 리스트nums
과 정수k
를 받아서 in-place
로 k
만큼 우측으로 회전시키는 문제입니다.
제가 생각한 코드는 다음과 같습니다.
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
n = len(nums)
k %= n
if n < 2 or k == 0:
return
idx,first_num = 0,nums[0]
tmp = nums[-k:]
nums[k:] = nums[:n-k]
nums[:k] = tmp
n
: nums
의 길이입니다.k
의 값이 n길이만큼 회전해도 제자리이므로 나머지 값인 k%n
을 k
로 재정의합니다.n
값과 k
값을 넣을 예정이기 때문에 인덱스 값에 혼란을 주는 예외를 미리 제외합니다. (길이 1 & 회전 x)코드 자체는 쉽지만 문제에서 얘기한 공간복잡도O(1)을 만족하지 못하고 있었습니다.
꽤 오래 고민했지만 결국은 변수를 저장할 공간이 필요하고 이것은 어떠한 코드를 작성하더라도 지나갈 길이라는 생각이 들었습니다.
나중에 다시 돌아와서 고민할 부분으로 남겨두어야 겠습니다.