Algorithm/LeetCode
[LeetCode] 189. Rotate Array
rrojin
2022. 3. 1. 16:07
문제링크
https://leetcode.com/problems/rotate-array/
Rotate Array - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
코드
풀이1
1
2
3
4
5
6
7
8
|
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
n = len(nums)
k = k % n
nums[:] = nums[n-k:] + nums[:n-k]
|
cs |
풀이2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
def reverse(nums, i, j):
while i<j:
nums[i],nums[j] = nums[j], nums[i]
i+=1
j-=1
"""
Do not return anything, modify nums in-place instead.
"""
n = len(nums)
k = k % n
reverse(nums, 0, n-1)
reverse(nums, 0, k-1)
reverse(nums, k, n-1)
|
cs |
POINT
풀이1:
리스트 슬라이싱을 사용해서 필요한 부분만큼 잘라 리스트 앞에 붙였다.
풀이2:
reverse를 사용한 방법이다.
총 3번 reverse를 하는데,
첫번째는 0~끝까지 뒤집고, 두번쨰는 0~k-1까지 , 세번째는 k~끝까지 뒤집는다.