ETH官方钱包

前往
大廳
主題

LeetCode - 2683. Neighboring Bitwise XOR 解題心得

Not In My Back Yard | 2024-07-20 12:00:19 | 巴幣 0 | 人氣 55

題目連結(jié):


題目意譯:
一個索引值從 0 開始且長度為 n 的陣列 derived,是藉由計算長度為 n 的二元陣列 original 中相鄰數(shù)值的按位元(Bitwise)XOR 之值而得。

準確來說,對於每一個位於範圍 [0, n - 1] 中的索引值 i 來說:
    如果 i = n - 1,則 derived[i] = original[i] ⊕ original[0]。
    反之,則 derived[i] = original[i] ⊕ original[i + 1]。

給定一陣列 derived,你的任務是判斷使否存在著一個合法二元陣列 original 按上述流程可以得到 derived。

如果此陣列存在,則回傳真(True);反之,回傳假(False)。

一個二元陣列為一個只包含 0 和 1 的陣列。

限制:
n == derived.length
1 ≦ n ≦ 10 ^ 5
derived 中的數(shù)值只會是 0 或是 1。



範例測資:
範例 1:
輸入: derived = [1,1,0]
輸出: true
解釋: 一個可以得到 derived 的合法陣列 original 為 [0,1,0]。
derived[0] = original[0] ⊕ original[1] = 0 ⊕ 1 = 1
derived[1] = original[1] ⊕ original[2] = 1 ⊕ 0 = 1
derived[2] = original[2] ⊕ original[0] = 0 ⊕ 0 = 0

範例 2:
輸入: derived = [1,1]
輸出: true
解釋: 一個可以得到 derived 的合法陣列 original 為 [0,1]。
derived[0] = original[0] ⊕ original[1] = 1
derived[1] = original[1] ⊕ original[0] = 1

範例 3:
輸入: derived = [1,0]
輸出: false
解釋: 不存在著可以得到 derived 的合法陣列 original。


解題思維:
可以看到由於 derived 的定義性質(zhì)之緣故使得 original 是不可能直接推出來的。不過由於 original 中某一個元素只會是 0 或是 1,因此直接分兩個情況假設 original[0] 是 0 和假設 original[0] 是 1 然後照定義算到 original[n - 1]。

最後檢查 original[0] 與 original[n - 1] XOR 之後是否在兩種情況下中的一個等於 derived[0] 即可判斷是否存在著所求的陣列 original。如果有,則回傳真;反之,則回傳假。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創(chuàng)作回應

更多創(chuàng)作