Leetcode1313 Decompress Run-Length Encoded List(解压缩编码列表)
Posted 一只桃子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode1313 Decompress Run-Length Encoded List(解压缩编码列表)相关的知识,希望对你有一定的参考价值。
public int[] decompressRLElist(int[] nums) {
int[] result = new int[1000];
int k = 0;
for (int i = 0; i < (nums.length / 2); i++) {
for (int j = 0; j < nums[2 * i]; j++) {
result[k] = nums[2 * i + 1];
k++;
}
}
/*System.out.println("输入解码后的数组数据");
for(int i=0;i<k;i++)
System.out.print(result[i]+" ");*/
return result;
}
这是自己的代码
最终输出结果为
由于java数组长度是无法改变的 所以我预设了一个固定空间数组 导致最后输出了多余的0元素 导致无法ac
问题出在没有想到数组长度怎么解决 (自己真的笨
查看了solutions发现数组的偶位置元素值相加之和,就是数组长度
故修改代码为:
public int[] decompressRLElist(int[] nums) {
int l=0;
for(int i=0;i<nums.length;i+=2)
l+=nums[i];
int [] result=new int[l];
int k = 0;
for (int i = 0; i < (nums.length / 2); i++) {
for (int j = 0; j < nums[2 * i]; j++) {
result[k] = nums[2 * i + 1];
k++;
}
}
System.out.println("输入解码后的数组数据");
for(int i=0;i<k;i++)
System.out.print(result[i]+" ");
return result;
}
同时还看到了另外一种解法
LinkedList<Integer> list = new LinkedList<>();
for (int i = 0; i < nums.length; i = i + 2) {
for (int j = 0; j < nums[i]; j++) {
list.add(nums[i + 1]);
}
}
int [] result=new int[list.size()];
for(int i=0;i<list.size();i++){
result [i]=list.get(i);
}
return result;
以上是关于Leetcode1313 Decompress Run-Length Encoded List(解压缩编码列表)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode --- 1313. Decompress Run-Length Encoded List 解题报告
Leetcode1313 Decompress Run-Length Encoded List(解压缩编码列表)