美文网首页
python异或高阶应用-前缀异或法

python异或高阶应用-前缀异或法

作者: wanzhouyi | 来源:发表于2021-05-18 22:52 被阅读0次

前言

我们在算法中经常会看到前缀和的解法,能够有效地降低算法复杂度。有一个和前缀和非常类似的算法,前缀异或法。

简介

由于异或具有自反性:即任何数异或自身,结果为0。利用这个特性,我们可用于消除影响。

 a ⊕ a = 0

前缀异或的解释:对于 preXOR[i] 表示为前 i 项数的异或值。
假设我们有数组 arr: [1, 2, 3, 4, 5, 6]
前零项的异或值为: 0 = 0
前一项的异或值为: 1 = 1
前二项的异或值为: 1 ⊕ 2 = 3
前三项的异或值为: 1 ⊕ 2 ⊕ 3 = 0
前四项的异或值为: 1 ⊕ 2 ⊕ 3 ⊕ 4 = 4
前五项的异或值为: 1 ⊕ 2 ⊕ 3 ⊕ 4 ⊕ 5 = 1
前六项的异或值为: 1 ⊕ 2 ⊕ 3 ⊕ 4 ⊕ 5 ⊕ 6 = 7

因此它的前缀异或数组为 preXOR: [0, 1, 3, 0, 4, 1, 7];

现在假如我们要求第三项到第六项的前异或值,我们正常的思路应该是

3 ⊕ 4 ⊕ 5 ⊕ 6

但是应用前缀异或的思路,不用这么暴力了。因为

3 ⊕ 4 ⊕ 5 ⊕ 6 = (1 ⊕ 2) ⊕ (1 ⊕ 2 ⊕ 3 ⊕ 4 ⊕ 5 ⊕ 6) = 3 ⊕ 7

这样就可以在O(1)的时间复杂度内求出结果了。

应用

  • 1310.子数组异或查询
  • 1442.形成两个异或相等数组的三元组数目

相关文章

  • python异或高阶应用-前缀异或法

    前言 我们在算法中经常会看到前缀和的解法,能够有效地降低算法复杂度。有一个和前缀和非常类似的算法,前缀异或法。 简...

  • 用 Python 加密文件!

    基础知识 在 Python 中异或操作符为:^,也可以记作 XOR。按位异或的意思是:相同值异或为 0,不同值异或...

  • python异或运算

    一、异或运算的定义 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。在python中用...

  • 异或

    定义:同为0,异为10^0 01^0 1奇数^1 加-1;偶数^1 加1任何整数^0 不变:abb(可以调换顺序)...

  • 异或

    异或Exclusive or(通常称为“XOR”)是布尔二进制操作符,当第一个输入或第二个输入(但不是两者都是)为...

  • 异或

  • 异或

    异或 题目原链接:https://www.nowcoder.com/practice/fc05f68c5f4743...

  • 异或

    1010异或1111=0101异或运算还可以 是n-1-N 例如 1111-1010 = 0101

  • 异或

    5.1 概述 异或(XOR)是一种逻辑二元操作,当两个输入中有且仅有一个为真时,结果为真。 另一种思考异或的方式是...

  • 异或加密解密

    异或,英文为exclusive OR,或缩写成xor异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符...

网友评论

      本文标题:python异或高阶应用-前缀异或法

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