[참고문제] : https://leetcode.com/problems/rotate-array/
문제 풀이
생각의 흐름 - Circular Linked List 다.
보자마자, Circular Linked List로 구현하면 될 것이란 건 알았다. 다만, 자료구조를 만드는게 목표가 아니니 list로 처리하기로 함.
생각의 흐름 - 어디부터 끊어지는 지 보자.
k는 받지만, 모듈러 연산은 해야겠다고 판단.
생각의 흐름 - 끊어지는 부분 앞을 그냥 뒤에 추가하고, 거기부터 읽어내자.
List에 넣어두고, 앞부분을 그냥 반복해서 넣어주고, 읽을 때 끊어졌던 부분 부터 읽자고 판단.
class Solution {
public void rotate(int[] nums, int k) {
k %= nums.length;
List<Integer> arr = Arrays.stream(nums).boxed().collect(Collectors.toList());
List<Integer> arr2 = arr.subList(nums.length - k, nums.length);
arr2.addAll(arr.subList(0, nums.length - k));
for(int i = 0; i < nums.length; i++) {
nums[i] = arr2.get(i);
}
}
}
'Algorithm' 카테고리의 다른 글
[java] Remove Nth Node From End of List (0) | 2022.07.02 |
---|---|
[java] Container With Most Water (0) | 2022.07.02 |
[java] Median of Two Sorted Arrays (0) | 2022.06.23 |
[java] Longest Substring Without Repeating Characters (0) | 2022.06.23 |
[java] jump game 2 (0) | 2022.06.22 |