1486. 数组异或操作

news2024/10/21 11:38:08

1486. 数组异或操作
题目含义:根据整数 n n n s t a r t start start 构造一个数组,数组元素为 n u m s [ i ] = 2 i + s t a r t , i ∈ [ 0 , n − 1 ] nums[i] = 2i + start, i \in [0,n-1] nums[i]=2i+start,i[0,n1];最后返回这个数组全部元素的异或结果。

我们可以根据异或运算的性质实现时间复杂度为 O ( 1 ) O(1) O(1)
⊕ \oplus 为异或运算,那么就有以下性质:
在这里插入图片描述
第 5 点性质,由于 x x x偶数时, x x x x + 1 x+1 x+1 只有最低位不同,所以 x ⊕ ( x + 1 ) = 1 x \oplus (x+1) = 1 x(x+1)=1;因此 0 ⊕ 1 ⊕ 2 ⊕ 3 = 1 ⊕ 1 = 0 0 \oplus 1 \oplus 2 \oplus 3 = 1 \oplus 1 = 0 0123=11=0

对于本题,我们需要求解 s t a r t ⊕ ( 2 + s t a r t ) ⊕ ( 4 + s t a r t ) ⊕ . . . ⊕ ( 2 ( n − 1 ) + s t a r t ) start \oplus (2 + start) \oplus (4 + start) \oplus ... \oplus (2(n-1) + start) start(2+start)(4+start)...(2(n1)+start) 的结果。
观察公式可以知道,这些元素的奇偶性质相同,因此它们的二进制表示中的最低位或者均为 1,或者均为 0。于是我们可以把参与运算的数的二进制位的最低位提取出来单独处理。当且仅当 start 为奇数,且 n 也为奇数时,结果的二进制位的最低位才为 1,我们将最低位用 e e e 存储。

此时,当我们把每个元素右移一位(除以 2),再将 s = s t a r t 2 s = \frac{start }{2} s=2start,得到
s ⊕ ( 1 + s ) ⊕ ( 2 + s ) . . . ⊕ ( ( n − 1 ) + s ) ⋅ 2 + e s \oplus (1 + s) \oplus (2 + s) ... \oplus ((n-1) + s) \cdot 2 + e s(1+s)(2+s)...((n1)+s)2+e
此时,我们需要求解 [ s , ( n − 1 ) + s ] [s, (n-1) + s] [s,(n1)+s] 这个序列的异或结果。
根据性质 5,我们知道,连续四个整数的异或结果为 0,那么就有以下四种情况:
在这里插入图片描述
其中, s u m X o r ( x ) sumXor(x) sumXor(x) 是一个函数,表示 0 ⊕ 1 ⊕ 2 ⊕ . . . ⊕ x 0 \oplus 1 \oplus 2 \oplus ... \oplus x 012...x
我们再进一步的化简:
在这里插入图片描述
x x x 为偶数时,所以 x ⊕ ( x + 1 ) = 1 x \oplus (x+1) = 1 x(x+1)=1
x = 4 k + 1 x=4k+1 x=4k+1,此时 x − 1 x-1 x1 是偶数,所以化简结果为 1;
x = 4 k + 2 x=4k+2 x=4k+2,此时 x − 2 x-2 x2 x x x 是偶数,所以 ( x − 2 ) ⊕ ( x − 1 ) = 1 (x-2) \oplus (x-1) = 1 (x2)(x1)=1,然后 x ⊕ 1 = x ⊕ 1 = x + 1 x \oplus 1 = x \oplus 1 = x + 1 x1=x1=x+1

那么
s ⊕ ( 1 + s ) ⊕ ( 2 + s ) . . . ⊕ ( ( n − 1 ) + s ) ⋅ 2 + b = [ 0 ⊕ 1 ⊕ . . . ⊕ ( s − 1 ) ] ⊕ [ 0 ⊕ 1 ⊕ . . . ⊕ ( s − 1 ) ] ⊕ [ s ⊕ ( 1 + s ) ⊕ ( 2 + s ) . . . ⊕ ( ( n − 1 ) + s ) ] = [ 0 ⊕ 1 ⊕ . . . ⊕ ( s − 1 ) ] ⊕ [ 0 ⊕ 1 ⊕ . . . ⊕ ( s − 1 ) ⊕ s ⊕ ( 1 + s ) . . . ⊕ ( ( n − 1 ) + s ) ] = s u m X o r ( s − 1 ) ⊕ s u m X o r ( s + n − 1 ) \begin{array}{l} s \oplus (1 + s) \oplus (2 + s) ... \oplus ((n-1) + s) \cdot 2 + b \\ = [0 \oplus 1 \oplus ... \oplus (s-1)] \oplus [0 \oplus 1 \oplus ... \oplus (s-1)] \oplus [s \oplus (1 + s) \oplus (2 + s) ... \oplus ((n-1) + s)] \\= [0 \oplus 1 \oplus ... \oplus (s-1)] \oplus [0 \oplus 1 \oplus ... \oplus (s-1) \oplus s \oplus (1 + s) ... \oplus ((n-1) + s)] \\ = sumXor(s-1) \oplus sumXor(s+n-1) \end{array} s(1+s)(2+s)...((n1)+s)2+b=[01...(s1)][01...(s1)][s(1+s)(2+s)...((n1)+s)]=[01...(s1)][01...(s1)s(1+s)...((n1)+s)]=sumXor(s1)sumXor(s+n1)
这样最后的结果即可表示为 ( s u m X o r ( s − 1 ) ⊕ s u m X o r ( s + n − 1 ) ) × 2 + e (sumXor(s−1)⊕sumXor(s+n−1))×2+e (sumXor(s1)sumXor(s+n1))×2+e

class Solution {
public:
    int xor_n(int n) {
        switch (n % 4) {
            case 0: return n;
            case 1: return 1;
            case 2: return n+1;
            default: return 0;
        }
    }
    int xorOperation(int n, int start) {
        int e = 1 & n & start, s = start / 2;
        int ret = xor_n(s-1) ^ xor_n(s + n - 1);
        return ret * 2 + e;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2213904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑 WiFi 上网,开发板和电脑直连,如何才能让开发板也有网络

目录 问题 解决方法 1.设置电脑为WLAN共享模式 2、设置以太网IP 3、设置开发板IP及网关 4、测试 5、开发板重启之后会自动清空 /etc/resolv.conf文件中的内容问题解决 问题 电脑 WiFi 上网,开发板和电脑直连,如何才能让开发板也有网络 解决方法 1.设置电脑…

父子情深!汤姆克鲁斯已经结束英国的奢华生活搬回美国跟儿子团聚

汤姆克鲁斯似乎一直专注于在英国的奢华生活方式。过去五年里,他拍摄了许多电影,还被看到与皇室成员和一线明星一起参加派对。但消息人士称,他可能正在准备搬回美国,以便更接近他的儿子康纳。 在跨过大西洋的五年后,他…

使用electron+vue开发桌面应用

electron是什么 electron由Node.jsChromiumNative APIs构成。你可以理解成,它是一个得到了Node.js和基于不同平台的Native APIs加强的Chromium浏览器,可以用来开发跨平台的桌面级应用。 它的开发主要涉及到两个进程的协作——Main(主&#x…

力扣题解(鸡蛋掉落)

887. 鸡蛋掉落 已解答 困难 相关标签 相关企业 给你 k 枚相同的鸡蛋&#xff0c;并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。 已知存在楼层 f &#xff0c;满足 0 < f < n &#xff0c;任何从 高于 f 的楼层落下的鸡蛋都会碎&#xff0c;从 f 楼层或比它…

JVM可视化监控

1 JConsole 一、介绍 JConsole 是一种 Java 监控和管理控制台工具&#xff0c;可以用于监视 Java 虚拟机&#xff08;JVM&#xff09;的性能和资源利用情况。它提供了一种图形化界面&#xff0c;可以实时查看 JVM 的运行状态、内存使用情况、线程活动、垃圾回收等信息&#xf…

Spring 实现 3 种异步流式接口,干掉接口超时烦恼

大家好&#xff0c;我是小富&#xff5e; 如何处理比较耗时的接口&#xff1f; 这题我熟&#xff0c;直接上异步接口&#xff0c;使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性&#xff0c;处理结果仅返回单个值。在某…

每日OJ题_牛客_小乐乐改数字_模拟_C++_Java

目录 牛客_小乐乐改数字_模拟 题目解析 C代码 Java代码 牛客_小乐乐改数字_模拟 小乐乐改数字_牛客题霸_牛客网 (nowcoder.com) 描述&#xff1a; 小乐乐喜欢数字&#xff0c;尤其喜欢0和1。他现在得到了一个数&#xff0c;想把每位的数变成0或1。如果某一位是奇数&#…

Python 工具库每日推荐【PyAutoGUI】

文章目录 引言Python桌面自动化库的重要性今日推荐:PyAutoGUI工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:自动化图像识别和点击案例分析高级特性失败安全机制相对坐标操作扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 Python工…

如何远程查看孩子的电脑使用?

越来越多的家庭拥有了多台电脑和智能设备。家长们往往没有办法时刻陪伴在孩子身边&#xff0c;监督他们的上网行为。而远程控制电脑可以帮助家长在任何时间、任何地点对孩子的电脑进行监控和管理&#xff0c;确保他们能够安全、健康地使用互联网。 通过远程控制软件&#xff0c…

锦锐科技CA51F7系列笔记

1、PWM &#xff08;1&#xff09;芯片一共有6个PWM通道&#xff08;PWM0~PWM5&#xff09; &#xff08;2&#xff09;IRCH时钟&#xff08;IRCH 频率为 16MHz&#xff09; &#xff08;3&#xff09;IRCL时钟&#xff08;IRCL频率为100KHz&#xff09; &#xff08;4&…

JavaScript 命令模式实战:打造可撤销的操作命令

一. 前言 在前端开发中&#xff0c;命令模式&#xff08;Command Pattern&#xff09;作为一种行为型设计模式&#xff0c;可以帮助我们将请求封装成一个对象&#xff0c;从而实现调用对象和执行对象之间的解耦&#xff0c;方便扩展和修改。 本文将和大家分享 JavaScript 中的…

实战子网掩码划分问题

拓扑要求总部有2个业务段&#xff0c;分部也有3个业务 还有互联地址段&#xff0c;还有管理地址段&#xff01;&#xff01;&#xff01;&#xff01; 23117 个段 192.168.1.0/24 怎么划分呢&#xff1f; 1 根据要求划分地址段 192.168.1.0/24 要划分7个网段那就…

linux------缓冲区与C库的原理

前言 一、缓冲区 缓冲区的作用是提高效率&#xff0c;因为将数据写入到设备&#xff0c;是需要调用系统接口的&#xff0c;如果每次写入缓冲区的数据就调用一次系统调用&#xff0c;涉及到系统调用这时操作系统就会介入&#xff0c;用户态转为内核态&#xff0c;这个过程需要时…

自然语言到 SQL 的曙光:我们准备好了吗?

发布于&#xff1a;2024 年 10 月 08 日 各位读者&#xff0c;国庆假期已过&#xff0c;我们打工人要开启奋斗新征程了&#xff0c;今天小编也是刚上班假期综合征还没过去&#xff0c;就被抓过来读论文&#xff0c;还好我在假期没闲着&#xff0c;整理了几篇关于 NL2SQL 的最新…

周易解读:两仪01

两 仪01 上一节里面&#xff0c;我们讲解了太极的知识。关于太极呢&#xff0c;它是可以有着多方面的含义。在这里呢&#xff0c;我们主要地&#xff0c;选取它的宇宙生成中的一种含义&#xff0c;认为太极是有所萌动&#xff0c;有所积累&#xff0c;但是呢&#xff0c;就是…

【YOLOv11】实战一:在LabVIEW 中使用OpenVINO实现YOLOv11

‍‍&#x1f3e1;博客主页&#xff1a; virobotics(仪酷智能)&#xff1a;LabVIEW深度学习、人工智能博主 &#x1f384;所属专栏&#xff1a;『LabVIEW深度学习实战』 &#x1f4d1;推荐文章&#xff1a;『LabVIEW人工智能深度学习指南』 &#x1f37b;本文由virobotics(仪酷…

单体应用、SOA 和微服务架构的区别

在软件架构的发展历程中&#xff0c;单体应用、面向服务架构&#xff08;SOA&#xff09;和微服务架构都有着各自的特点和适用场景。了解它们之间的区别&#xff0c;有助于我们在不同的项目需求下做出更合适的架构选择。 一、单体应用 &#xff08;一&#xff09;定义与特点 …

DAY8 Final等

Final关键字 final修饰静态变量&#xff0c;这个变量今后被称为常量&#xff0c; 可以记住一个固定值&#xff0c;并且程序中不能修改了&#xff0c;通常这个值作为系统的配置信息。常量的名称&#xff0c;建议全部大写&#xff0c;多个单词用下划线连接。 public static final…

PaddleOCR的包装生产日期识别_随记1

一、前言 项目难点 没有训练数据图像质量层次不齐: 角度倾斜、图片模糊、光照不足、过曝等问题严重 二.、环境搭建 本任务基于Aistudio完成, 具体环境如下&#xff1a; 操作系统: LinuxPaddleOCR: PaddleOCR_2.7text_renderer: masterpaddlepaddle-gpu2.6.0cuda版本是11.8,…

量化投资学习

1:投资定义就是付出一定的代价&#xff0c;期望能够得到一定汇报&#xff0c;可能会出现没有回报 2&#xff1a;投资分析流派 2.1:宏观策略分析法&#xff1a;从宏观经济大方向入手&#xff0c;再应用到具体股票也叫自上而下的研究方法&#xff0c;需要理解这个趋势的核心驱动…