美文网首页
【算法题】6431. 相邻值的按位异或

【算法题】6431. 相邻值的按位异或

作者: 程序员小2 | 来源:发表于2023-05-14 06:24 被阅读0次

    题目:

    下标从 0 开始、长度为 n 的数组 derived 是由同样长度为 n 的原始 二进制数组 original 通过计算相邻值的 按位异或(⊕)派生而来。

    特别地,对于范围 [0, n - 1] 内的每个下标 i :

    如果 i = n - 1 ,那么 derived[i] = original[i] ⊕ original[0]
    否则 derived[i] = original[i] ⊕ original[i + 1]
    给你一个数组 derived ,请判断是否存在一个能够派生得到 derived 的 有效原始二进制数组 original 。

    如果存在满足要求的原始二进制数组,返回 true ;否则,返回 false 。

    二进制数组是仅由 0 和 1 组成的数组。

    示例 1:

    输入:derived = [1,1,0]
    输出:true
    解释:能够派生得到 [1,1,0] 的有效原始二进制数组是 [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
    解释:能够派生得到 [1,1] 的有效原始二进制数组是 [0,1] :
    derived[0] = original[0] ⊕ original[1] = 1
    derived[1] = original[1] ⊕ original[0] = 1
    示例 3:

    输入:derived = [1,0]
    输出:false
    解释:不存在能够派生得到 [1,0] 的有效原始二进制数组。

    提示:

    n == derived.length
    1 <= n <= 105
    derived 中的值不是 0 就是 1 。

    java代码:

    class Solution {
        public boolean doesValidArrayExist(int[] derived) {
            int o=1;
            for (int num:derived){
                if(num==1)//如果derived[i]==1,说明original[i] 和original[i+1]不同
                    o=-o;//更新之后o就是original[i+1]
            }
            return o==1?true:false;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:【算法题】6431. 相邻值的按位异或

          本文链接:https://www.haomeiwen.com/subject/uvausdtx.html