给你一个以行程长度编码压缩的整数列表 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;}
}