《力扣面试150题》题单拓展——位运算

《力扣面试150题》题单拓展——位运算

1.基础知识

运算 符号 解读
并集 | ans = ans |4;
(1000 ∪ 0010) = 1010
交集 & 按位求交集
移位 <<左移 1<<1 = 10(2进制)
int m = l+((r-l)>>1); 二分法常用
count = num>>i & 1;    //右移i位,并和1与,得到的是i位上面是否是1
int len = 32-__builtin_clz(s);		//二进制的长度

//a ^ b = new_ans  ->  b = a ^ new_ans

//反转,可以用异或的方式 0 ^ 1 = 1, 1 ^ 1 = 0 

2.判断某位是否1

137.只出现一次的数字II

统计每位上面1的个数,模3,按所统计的位并集起来


191.位1的个数

先统计位数,然后n>>i &1 就可以了


190.颠倒二进制位

先统计,再移位放回

3.&

201.数字范围按位与

n 和 n+1 与后,某一位开始的后面都会被置为0,只有前面的公共前缀会被保留下来,找到即可

4.按位遍历运算

421.数组中两个数的最大异或值

两数之和的异或版本,叠加了 ^ |


2935.找出强数对的最大异或值II 难度分:2349

同上,不过多了附加条件

5.递归

779.第K个语法符号 难度分:1571

用到了异或反转

posted @ 2023-11-30 22:21  小柴cyl  阅读(33)  评论(0)    收藏  举报
/*粒子线条,鼠标移动会以鼠标为中心吸附的特效*/