[LeetCode] Decompress Run-Length Encoded List

아르당·2026년 4월 19일

LeetCode

목록 보기
271/303
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

run-length 인코딩으로 압축된 정수 리스트 nums가 주어진다.

인접한 두 요소의 쌍 [freq, val] = [nums[2 * i], nums[2 * i + 1]] (i >= 0)을 생각해라. 이러한 각 쌍은 freq 요소와 값 val이 서브리스트에 연결되어 있다. 모든 서브리스트를 왼쪽에서 오른 쪽으로 연결하여 압축 해제된 리스트를 생성한다.

압축 해제된 리스트를 반환해라.

Example

#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]

Constraints

  • 2 <= nums.length <= 100
  • nums.length % 2 == 0
  • 1 <= nums[i] <= 100

Solved

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;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글