🗒️1486. 数组异或操作
2025-1-22
| 2025-1-22
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Jan 22, 2025 04:34 AM
给你两个整数,n 和 start 。
数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。
请返回 nums 中所有元素按位异或(XOR)后得到的结果。

位运算——异或

模拟做法

位运算用法

为异或运算,异或运算满足以下性质:
  1. (交换律);
  1. (结合律);
  1. (自反性);
  1. ,有
  1. 为偶数时, 和  只有最低位不同,
在本题中,我们需要计算 
分析:
是偶数时, 也是偶数,这些数的最低位都是 ,因此 ,最低位就是 0;
是奇数时, 也是奇数,这些数的最低位都是 1 ,因此 最后不确定,需要根据 的个数来判定。也就是当 是偶数时,最后为 ;当 是奇数时,最后为
现在,我们抛去最后一位看,设 ,则
最后,通过变形(参考 灵茶山艾府 ),我们得到
根据异或运算的性质 5,我们发现,每四组异或为 。因此, 根据模 4 的结果,进行讨论:
  • 时,有 个数,正好凑成 组;
  • 时,有 个数,剩下 三个数, 是这一组的开头,一定是 4 的倍数,是偶数。根据性质 6,有 。而 也是偶数,因此
  • 时,有 个数,剩下两个数,同理,
  • 时,有 个数,剩下一个数,也就是
的异或和为,可以把异或和运算简化为数学表达:

📎 参考

  • 【题单】位运算
  • 1720. 解码异或后的数组42. 接雨水
    Loading...