位运算(bitwise operations)是所有算法和底层逻辑的核心之一。
🧩 一、什么是位运算?
计算机底层存储的所有数据都是二进制的 0
和 1
。
位运算就是直接对这些二进制位(bit)进行操作的运算。
它的好处是:
- ⚡ 极快(比普通加减乘除还快)
- 💡 可以高效实现一些数学逻辑、掩码、集合、状态压缩、DP 等技巧
- 💪 很多算法题和面试题都用它(如 位计数、子集生成、奇偶判断、异或和)
位运算(bitwise operations)是所有算法和底层逻辑的核心之一。
计算机底层存储的所有数据都是二进制的 0
和 1
。
位运算就是直接对这些二进制位(bit)进行操作的运算。
它的好处是:
给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。
示例 1:
输入:n = 2
输出:[0,1,1]
解释:
0 --> 0
1 --> 1
2 --> 10
示例 2:
输入:n = 5
输出:[0,1,1,2,1,2]
解释:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例 1 :
输入:nums = [2,2,1]
输出:1
示例 2 :
输入:nums = [4,1,2,1,2]
输出:4
示例 3 :
输入:nums = [1]
输出:1
提示:
1 <= nums.length <= 3 * 10^4
-3 * 10^4 <= nums[i] <= 3 * 10^4
除了某个元素只出现一次以外,其余每个元素均出现两次。
给你三个正整数 a、b 和 c。
你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b == c
成立的最小翻转次数。
「位翻转操作」是指将一个数的二进制表示任何单个位上的 1 变成 0 或者 0 变成 1 。
示例 1:
输入:a = 2, b = 6, c = 5
输出:3
解释:翻转后 a = 1 , b = 4 , c = 5 使得 a OR b == c
示例 2:
输入:a = 4, b = 2, c = 7
输出:1
示例 3: