算法基础--位运算

一、常见位运算总结:

1、基础位运算(^)

其中异或^有2种理解。

2、位图bitset相关(&|)

test判断第x位是1还是0:

可以让n右移,也可以让1左移,习惯上选择第一种

(n>>x)&1   判断结果是否为1

set把第x位变为1:

n |= (1<<x)     

reset把第x位变为0:

n &= ~(1<<x)

3、一个数n最右侧的1(&)

leetcode191 338 461

n & (~n) + 1

n & (n-1)  把最右侧的1变成0

4、^的运算律

LeetCode  136  260

二、相关题目

1、判断字符是否唯一

unique位图思想

1、力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

2、丢失的数字

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

3、两整数之和

利用异或,不进位加法,得到不进位的数

然后利用&并左移1位得到进位的数

重复该过程,直到一个变成0,另一个自然就是sum。

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

4、只出现一次的数字②

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

5、消失的两个数字

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值