문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
run-length 인코딩으로 압축된 정수 리스트 nums가 주어진다.
인접한 두 요소의 쌍 [freq, val] = [nums[2 * i], nums[2 * i + 1]] (i >= 0)을 생각해라. 이러한 각 쌍은 freq 요소와 값 val이 서브리스트에 연결되어 있다. 모든 서브리스트를 왼쪽에서 오른 쪽으로 연결하여 압축 해제된 리스트를 생성한다.
압축 해제된 리스트를 반환해라.
#1
Input: nums = [1, 2, 3, 4]
Output: [2, 4, 4, 4]
Explanation:
첫 번째 쌍 [1, 2]는 freq = 1이고 val = 2라서 배열 [2]를 생성한다.
두 번쨰 쌍 [3, 4]는 freq = 3이고 val = 4라서 배열 [4, 4, 4]를 생성한다.
마지막으로 [2] + [4, 4, 4]가 연결되서 [2, 4, 4, 4]이다.
#2
Input: nums = [1, 1, 2, 3]
Output: [1, 3, 3]
class Solution {
public int[] decompressRLElist(int[] nums) {
int length = 0;
for(int i = 0; i < nums.length; i += 2){
length += nums[i];
}
int[] result = new int[length];
int idx = 0;
for(int i = 0; i < nums.length; i += 2){
Arrays.fill(result, idx, idx + nums[i], nums[i + 1]);
idx += nums[i];
}
return result;
}
}