g2601_2700.s2683_neighboring_bitwise_xor.readme.md Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-kotlin Show documentation
Show all versions of leetcode-in-kotlin Show documentation
Kotlin-based LeetCode algorithm problem solutions, regularly updated
2683\. Neighboring Bitwise XOR
Medium
A **0-indexed** array `derived` with length `n` is derived by computing the **bitwise XOR** (⊕) of adjacent values in a **binary array** `original` of length `n`.
Specifically, for each index `i` in the range `[0, n - 1]`:
* If `i = n - 1`, then `derived[i] = original[i] ⊕ original[0]`.
* Otherwise, `derived[i] = original[i] ⊕ original[i + 1]`.
Given an array `derived`, your task is to determine whether there exists a **valid binary array** `original` that could have formed `derived`.
Return _**true** if such an array exists or **false** otherwise._
* A binary array is an array containing only **0's** and **1's**
**Example 1:**
**Input:** derived = [1,1,0]
**Output:** true
**Explanation:** A valid original array that gives derived is [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
**Example 2:**
**Input:** derived = [1,1]
**Output:** true
**Explanation:** A valid original array that gives derived is [0,1].
derived[0] = original[0] ⊕ original[1] = 1
derived[1] = original[1] ⊕ original[0] = 1
**Example 3:**
**Input:** derived = [1,0]
**Output:** false
**Explanation:** There is no valid original array that gives derived.
**Constraints:**
* `n == derived.length`
* 1 <= n <= 105
* The values in `derived` are either **0's** or **1's**