一轮复习——E.位运算模型总结
常用操作汇总
方法篇
①n的二进制最高位前0的个数:Integer.numberOfLeadingZeros(int n)
衍生用法:
1.计算n的二进制位数:32-Integer.numberOfLeadingZeros(int n)
例题👇
E.位运算-基础——3370. 仅含置位位的最小整数
E.位运算-基础——1342. 将数字变成 0 的操作次数
E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码
E.位运算-基础——2917. 找出数组中的 K-or 值
E.位运算-基础——342. 4的幂
2.得到n的有效二进制位全为1的数:
E.位运算-基础——3370. 仅含置位位的最小整数(解析相当全面)
②n的二进制中最高位的1所对应的十进制数值:Integer.highestOneBit(int n)
例题👇
E.位运算-基础——3370. 仅含置位位的最小整数
E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码
衍生用法:
得到n的有效二进制位全为1的数:
E.位运算-基础——3370. 仅含置位位的最小整数(解析相当全面)
③计算二进制中1的个数:Integer.bitCount(int n)
例题👇
E.位运算-基础——191. 位1的个数
E.位运算-基础——338. 比特位计数
A.每日一题——231. 2 的幂
A.每日一题——1356. 根据数字二进制下 1 的数目排序
E.位运算-基础——3226. 使两个整数相等的位更改次数
E.位运算-基础——461. 汉明距离+2220. 转换数字的最少位翻转次数
E.位运算-基础——1342. 将数字变成 0 的操作次数
A.每日一题——762. 二进制表示中质数个计算置位
A.每日一题——401. 二进制手表
D.二分查找-二分答案-求最大——3143. 正方形中的最多点数
第十六届蓝桥杯大赛软件赛省赛Java 大学 A 组Q3
E.位运算-基础——2595. 奇偶位数
E.位运算-异或:异或消消乐入门(1720题+2433题+2683题+2997题)中的2997题
E.位运算-异或:2429. 最小异或
④16位全1的二进制数:0xffff
例题👇
A.每日一题——1356. 根据数字二进制下 1 的数目排序
⑤32位全1的二进制数:-1
例题👇
E.位运算-与或:2871题+2401题中的2871题
⑥0x5555 5555=0101 0101 0101 0101 0101 0101 0101 0101(共32位)
例题👇
E.位运算-基础——342. 4的幂
E.位运算-基础——2595. 奇偶位数
A.每日一题——1758. 生成交替二进制字符串的最少操作数
衍生用法
0xAAAA AAAA=1010 1010 1010 1010 1010 1010 1010 1010(共32位)
A.每日一题——1758. 生成交替二进制字符串的最少操作数
⑦将一个int数值的32位二进制位完全反转,返回反转后的新int:Ineteger.reverse(int n)
例题👇
A.每日一题——190. 颠倒二进制位
⑧String转int:Integer.parseInt(String s)
举例:Integer.parseInt("101") // "101"→101
例题👇
A.每日一题——3433. 统计用户被提及情况
B.双指针——2562. 找出数组的串联值
P8598 [蓝桥杯 2013 省 AB] 错误票据
衍生用法
二进制String转int:Integer.parseInt(String s,2)
举例:Integer.parseInt("101",2) // "101"→5
例题👇
A.每日一题——1404. 将二进制表示减到 1 的步骤数
A.每日一题——1022. 从根到叶的二进制数之和
A.每日一题——1758. 生成交替二进制字符串的最少操作数
A.每日一题——1980. 找出不同的二进制字符串
⑨String转Integer:Integer.valueOf(String s)
例题👇
B.双指针——2562. 找出数组的串联值
第 171 场双周赛Q1——3765. 完全质数
第 481 场周赛Q1——100942. 整数的镜像距离
⑩任意类型转String:String.valueOf()
例题👇
B.双指针——2562. 找出数组的串联值
第 171 场双周赛Q1——3765. 完全质数
第 481 场周赛Q1——100942. 整数的镜像距离
⑪int转二进制字符串:Integer.toBinaryString(int n) 结果无前置0
举例:Integer.toBinaryString(5); // 5 → "101"
举例:Integer.toBinaryString(3); // 5 → "1"
例题👇
A.每日一题——868. 二进制间距E.位运算-基础——3211. 生成不含相邻零的二进制字符串
A.每日一题——1980. 找出不同的二进制字符串
⑫直接生成n个0(用于补充前置位0):"0".repeat(int n)
例题👇
A.每日一题——1980. 找出不同的二进制字符串
技巧篇
①异或消消乐:n^n=0
例题👇
第 470 场周赛Q2——3702. 按位异或非零的最长子序列
贪心算法:14.增减字符串匹配
优选算法-位运算:34.丢失的数字
优选算法-位运算:36.只出现一次的数字Ⅱ
优选算法-位运算:37.消失的两个数字
E.位运算-异或:2588. 统计美丽子数组数目
A.每日一题:2196. 根据描述创建二叉树
②取出n的二进制中第x位:(n>>x)&1
例题👇
D.二分查找-二分答案-求最大——3143. 正方形中的最多点数
E.位运算-基础——461. 汉明距离+2220. 转换数字的最少位翻转次数
A.每日一题——868. 二进制间距
E.位运算-基础——2917. 找出数组中的 K-or 值
A.每日一题——693. 交替位二进制数
E.位运算-基础——2595. 奇偶位数
A.每日一题——1888. 使二进制字符串字符交替的最少反转次数
A.每日一题——1415. 长度为 n 的开心字符串中字典序第 k 小的字符串
③将n的二进制第x位改为1:n|=(1<<x)
例题👇
E.位运算-基础——2917. 找出数组中的 K-or 值
E.位运算-基础——2657. 找到两个数组的前缀公共数组
E.位运算-基础——面试题 05.01. 插入
④将n的二进制第x位改为0:n&=(~(1<<x))
⑥位图思想:将值存进一个int或long里
例题👇
E.位运算-基础——2657. 找到两个数组的前缀公共数组
A.每日一题——3714. 最长的平衡子串 II
A.每日一题——3625. 统计梯形的数目 II
A.每日一题——1411. 给 N x 3 网格图涂色的方案数
A.每日一题——1356. 根据数字二进制下 1 的数目排序
A.每日一题——2154. 将找到的值乘以 2
A.每日一题:874. 模拟行走机器人
⑦取出n的二进制中最右侧的1:n&-n
例题👇
A.每日一题——231. 2 的幂(有n&-n的详细原理解析)
A.每日一题——2154. 将找到的值乘以 2
⑧将n的二进制中最右侧的1改为0:n&(n-1)
例题👇
A.每日一题——231. 2 的幂(有n&(n-1)的详细原理解析)
E.位运算-基础——191. 位1的个数
E.位运算-基础——338. 比特位计数
E.位运算-异或:2429. 最小异或
⑨将n的二进制中最右侧的0改为1:n&(n+1)
E.位运算-异或:2429. 最小异或
⑩2ⁿ:1<<n
例题👇
A.每日一题——231. 2 的幂
E.位运算-基础——191. 位1的个数
A.每日一题——1545. 找出第 N 个二进制字符串中的第 K 位
第 491 场周赛Q3——100936. 按位或的最小值
E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码
E.位运算-基础——3370. 仅含置位位的最小整数
E.位运算-异或:1829. 每个查询的最大异或值
⑪'1'→'0';'0'→'1':(char)n^=1
例题👇
A.每日一题——1545. 找出第 N 个二进制字符串中的第 K 位(有n^=1的详细原理解析)
A.每日一题——1758. 生成交替二进制字符串的最少操作数
A.每日一题——1888. 使二进制字符串字符交替的最少反转次数
A.每日一题——1980. 找出不同的二进制字符串
衍生用法
1→0;0→1:n^=1
例题👇
E.位运算-基础——2595. 奇偶位数
基础题
用位运算代替数组操作
题目及解析👇
E.位运算-基础——3370. 仅含置位位的最小整数
E.位运算-基础——3226. 使两个整数相等的位更改次数
A.每日一题——1356. 根据数字二进制下 1 的数目排序
E.位运算-基础——461. 汉明距离+2220. 转换数字的最少位翻转次数
E.位运算-基础——1342. 将数字变成 0 的操作次数
E.位运算-基础——476. 数字的补数+1009. 十进制整数的反码
A.每日一题——868. 二进制间距
E.位运算-基础——2917. 找出数组中的 K-or 值
A.每日一题——693. 交替位二进制数
E.位运算-基础——2657. 找到两个数组的前缀公共数组
E.位运算-基础——面试题 05.01. 插入
A.每日一题——231. 2 的幂
E.位运算-基础——342. 4的幂
E.位运算-基础——191. 位1的个数
E.位运算-基础——338. 比特位计数
E.位运算-基础——2595. 奇偶位数
A.每日一题——2154. 将找到的值乘以 2
E.位运算-基础——3211. 生成不含相邻零的二进制字符串
异或^(XOR)
这里的题目大多是“前缀异或”的思路
题目及解析👇
LeetCode编程入门中第五题:1486. 数组异或操作
E.位运算-异或:异或消消乐入门(1720题+2433题+2683题+2997题)
E.位运算-异或:1310. 子数组异或查询
E.位运算-异或:1829. 每个查询的最大异或值
E.位运算-异或:1442. 形成两个异或相等数组的三元组数目
E.位运算-异或:2429. 最小异或
E.位运算-异或:2527. 查询数组异或美丽值
E.位运算-异或:2317. 操作后的最大异或和
E.位运算-异或:2588. 统计美丽子数组数目
与&或|(AND/OR)
&时,1有“保留”的作用,而0有着“去除”的作用
题目及解析👇
E.位运算-与或:2980题+1318题+2419题
E.位运算-与或:2871题+2401题
