アレイ1313タイトル

アレイ1313タイトル

1313圧縮解除コード化されたリスト

あなたの整数NUMSのランレングス圧縮符号化リストを与えるために。

二つの隣接する各対の要素[A、B] = [NUMS [2 * i]は、NUMS [2 * I + 1](I> = 0の場合)、各ペアはリア減圧発現を検討B要素の値。

解凍後のリストに戻ってください。

出典:滞在ボタン(LeetCode)
//leetcode-cn.com/problems/decompress-run-length-encoded-list:リンク:httpsの
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

例:

入力:NUMS = [1,2,3,4]
出力:[2,4,4,4-]
説明:最初のペア[1,2]出現2の周波数は配列[2]を生成するために、1で表します。
第二の対[3,4]は配列[4,4,4]を生成するために、3出現4の周波数を表します。
最後に一緒に直列に[2] + [4,4,4] = [2,4,4,4-]に。

ヒント:

  • 2 <= nums.length <= 100
  • nums.length % 2 == 0
  • 1 <= nums[i] <= 100

キー問題解決:印刷の配列の新しい長さを決定するために、第1 - NUMS続いも長期添字要素と格納されている、[I](iは奇数である)プリントNUMS [I-1]回。

class Solution {
    public int[] decompressRLElist(int[] nums) {
        int sum = 0;
        for(int i=0;i<nums.length;i+=2){        //计算偶数项角标所存数字的和sum
            sum+=nums[i];
        }
        int[] arr = new int[sum];               //建立长度为sum的新数组,用来输出数据
        int index=0;                            //新数组从第一个数开始打印
        for(int j=1;j<nums.length;j+=2){        //遍历奇数项角标,要打印的数据
            for(int k=0;k<nums[j-1];k++){       //把当前要打印的数据nums[j]打印nums[j-1]次
                arr[index++]=nums[j];           //arr数组从头到尾打印arr[j]
            }
        }
        return arr;                             //返回arr的值
    }
}

結果:

 

公開された20元の記事 ウォンの賞賛0 ビュー239

おすすめ

転載: blog.csdn.net/whydeboke/article/details/104456449