当前位置: 代码迷 >> 综合 >> 【LeetCode】1313. 解压缩编码列表(Java)
  详细解决方案

【LeetCode】1313. 解压缩编码列表(Java)

热度:8   发布时间:2024-02-23 10:31:33.0

给你一个以行程长度编码压缩的整数列表 nums 。

考虑每对相邻的两个元素 [freq, val] = [nums[2i], nums[2i+1]] (其中 i >= 0 ),每一对都表示解压后子列表中有 freq 个值为 val 的元素,你需要从左到右连接所有子列表以生成解压后的列表。

请你返回解压后的列表。

解法一

使用ArrayList

class Solution {
    public int[] decompressRLElist(int[] nums) {
    List<Integer> list = new ArrayList<>();//nums[2*i]:要循环的数字//nums[2*i+1]:循环的次数for (int i = 0; i < nums.length; i += 2) {
    for (int j = 0; j < nums[i]; j++) {
    list.add(nums[i+1]);}}int[] arr = new int[list.size()];for (int i = 0; i < arr.length; i++) {
    arr[i] = list.get(i);}return arr;}
}

在这里插入图片描述

解法二

创建数组

class Solution {
    public int[] decompressRLElist(int[] nums) {
    int count = 0;//先记录一共需要几个数字,然后创建数组for (int i = 0; i < nums.length; i += 2) {
    count += nums[i];}int[] result = new int[count];count = 0;//这里上面的解法一致for (int i = 0; i < nums.length; i += 2) {
    for (int j = 0; j < nums[i]; j++) {
    result[count] = nums[i + 1];count++;}}return result;}
}

在这里插入图片描述

  相关解决方案