LeetCode(1720)-デコードされたXOR配列

記事のディレクトリ

トピック

1720. XORをデコードした後の
配列不明な整数配列arrは、n個の非負の整数で構成されています。
エンコードされた後、長さn-1でエンコードされた別の整数配列になります。ここで、encoded [i] = arr [i] XOR arr [i +1]です。たとえば、arr = [1,0,2,1]は、エンコード後にエンコード= [1,2,3]になります。
エンコードされた配列をエンコードし、元の配列arrの最初の要素(arr [0])を指定します。
元の配列arrをデコードして返してください。答えが存在し、ユニークであることを証明することができます。

例1:

输入:encoded = [1,2,3], first = 1
输出:[1,0,2,1]
解释:若 arr = [1,0,2,1] ,那么 first = 1 且 encoded = [1 XOR 0, 0 XOR 2, 2 XOR 1] = [1,2,3]

例2:

输入:encoded = [6,2,7,3], first = 4
输出:[4,2,0,7,4]

促す:

2 <= n <= 104
encoded.length == n - 1
0 <= encoded[i] <= 105
0 <= first <= 105

ソリューション(Java)

タイトルのXORは排他的論理和を表します。2つの数値の排他的論理和は、2つの数値を2進数に変換し、ビットごとに排他的論理和を実行した結果です。排他的論理和は
Javaでは「^」で表されます。

エンコード[i] = arr [i] ^ arr [i + 1]
—>エンコード[i] ^ arr [i] = arr [i] ^ arr [i] ^ arr [i + 1]
—>エンコード[i] ^ arr [i] = 0 ^ arr [i + 1]
—>エンコード[i] ^ arr [i] = arr [i + 1]

class Solution 
{
    
    
    public int[] decode(int[] encoded, int first) 
    {
    
    
        int[] arr = new int[encoded.length + 1];
        arr[0] = first;
        for(int index = 1;index < arr.length;index++)
        {
    
    
            arr[index] = arr[index - 1] ^ encoded[index - 1];
        }
        return arr;
    }
}

おすすめ

転載: blog.csdn.net/weixin_46841376/article/details/113946386