0. 문제
https://leetcode.com/problems/rotate-array/?envType=study-plan-v2&envId=top-interview-150
1. 문제 설명
2. 문제 풀이
(현재 인덱스 + k) % 전체 길이
위치에 현재 인덱스의 값을 넣는다.3. 코드
class Solution {
public void rotate(int[] nums, int k) {
int[] tmp = nums.clone();
for (int i = 0; i < nums.length; i++) {
int next = (i + k) % nums.length;
nums[next] = tmp[i];
}
}
}
4. 결과
5. 개선점
class Solution {
public void rotate(int[] nums, int k) {
int size = nums.length;
k = k % lsize;
reverse(nums,0,size-1);
reverse(nums,0,k-1);
reverse(nums,k,size-1);
}
public void reverse(int[] nums, int start, int end){
while(start < end){
int temp = nums[start];
nums[start++] = nums[end];
nums[end--] = temp;
}
}
}