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;
原文地址:https://www.cnblogs.com/chengxian/p/12204018.html
时间: 2024-10-19 14:45:28