码迷,mamicode.com
首页 > Web开发 > 详细

Leetcode1313 Decompress Run-Length Encoded List(解压缩编码列表)

时间:2020-01-17 09:16:07      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:结果   tco   自己   技术   ret   info   长度   sys   mamicode   

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(解压缩编码列表)

标签:结果   tco   自己   技术   ret   info   长度   sys   mamicode   

原文地址:https://www.cnblogs.com/chengxian/p/12204018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!