476. Number Complement
来源:互联网 发布:js面向对象 阮一峰 编辑:程序博客网 时间:2024/05/22 09:54
问题描述:将一个int型的正整数2进制形式逐位取反。
思路:逐位取反通过异或即可实现,所以构建一串二进制全是1的数据取异或即可。
原答案:
public int findComplement(int num) { int leadZero=Integer.numberOfLeadingZeros(num); int count=1<<(32-leadZero); int i=count-1; return i^num; }
基本与最佳答案一致,但如下答案似乎更好
public int findComplement(int num) { int mask = num; mask |= mask >> 1; mask |= mask >> 2; mask |= mask >> 4; mask |= mask >> 8; mask |= mask >> 16; return num ^ mask;
与java源码中highestOneBit方法类似。先将数字转化成从最高位开始全为1的数字,然后异或得出答案。
highestOneBit(i)代码品读
阅读全文
0 0
- LeetCode 476. Number Complement
- leetcode 476. Number Complement
- 【Leetcode】476. Number Complement
- 【Leetcode】476. Number Complement
- 476. Number Complement*
- LeetCode 476. Number Complement
- LeetCode 476. Number Complement
- LeetCode--476. Number Complement
- LeetCode 476. Number Complement
- 476. Number Complement
- 476. Number Complement [LeetCode]
- 476. Number Complement
- [LeetCode]476.Number Complement
- 476. Number Complement
- 【LeetCode】 476. Number Complement
- LeetCode 476. Number Complement
- 476. Number Complement
- 476. Number Complement (E)
- UnityShader学习资料推荐
- 接口小结
- 马尔科夫链 吸收概率方程组推导
- 友元类,友元函数
- 苹果4亿美元收购Shazam,大白菜终于被猪拱了!
- 476. Number Complement
- Map的key为自定义结构体
- javascript 出现Unexpected identifier问题
- android 自定义星级评分控件
- 无法使用数据库Can't connect to local MySQL server through socket
- Unity的包体压缩以及音效优化
- 几种文字匹配算法
- RecyclerView的功能扩展(Android图片选择器)
- 获取日期