leetcode 476 Number Complement
来源:互联网 发布:监控器无网络视频 编辑:程序博客网 时间:2024/05/29 14:41
题目来源:LeetCode 476
简单题目分析:
把一个数取反。但是,肯定不是直接用~操作,因为这样会把最高位1之前的前缀0也取反,因此我们所需要做的就是找到最高位1所在的位置,下面附上我的代码:
int findComplement(int num){ int iThBite=0; //记录最高位1的位数 int ans=num,temp,i; while(num) { temp=num; //这里用到了x&(x-1)的技巧,最后temp的二进制一定表示为00000x0000,其中x是原num中最高位的1 num&=(num-1); //一开始这里的&让我写成^操作了,一直RE... if(!num) break; } while(temp) { temp>>=1; iThBite++; } iThBite--; //这里把iThBite减1是为了下面取反第n位方便,因为位数从0开始计数 for(i=0;i<=iThBite;++i) ans=ans^(1<<i); //依次把最高位以下的位取反,注意将第n位(从0开始计数)取反的操作 return ans;}
写完之后感觉自己的代码太难看了...一点也不简洁,leetcode上的代码必然是优美简单的,于是乎我看了看讨论区,里面的黑科技不要太多...附上两个代码:
class Solution {public: int findComplement(int num) { unsigned mask = ~0; while (num & mask) mask <<= 1; return ~mask & ~num; }};
另外一个是python的:
class Solution(object): def findComplement(self, num): i = 1 while i <= num: i = i << 1 return (i - 1) ^ num
日常赞颂python,感觉python与leetcode简直就是绝配!
阅读全文
0 0
- [leetcode-476]Number Complement
- leetcode-476- Number Complement
- leetcode 476 Number Complement
- Leetcode #476 Number Complement
- 【LeetCode】476 Number Complement
- leetcode 476 Number Complement
- LeetCode-476 Number Complement
- leetcode 476: Number Complement
- LeetCode 476 Number Complement
- LeetCode 476 : Number Complement
- Leetcode 476 Number Complement
- LeetCode(476): Number Complement
- LeetCode number 476 Number Complement
- leetcode 476 Number Complement C++
- LeetCode- 476 Number Complement(easy)
- LeetCode 476 Number Complement(位运算)
- LeetCode OJ 476 Number Complement [Easy]
- LeetCode 476 Number Complement 补数
- leetcode-48. Rotate Image
- Python版本升级
- RAID实战
- 解决Spring MVC @ResponseBody返回中文字符串乱码问题
- 05 春申门下三千客,小杜城南五尺天
- leetcode 476 Number Complement
- ROC曲线/AUC值/PR曲线
- Ignatius and the Princess IV HDU
- Android中使用SVG
- 第4章 简单的4位计算机设计及实现
- Hbase结合Mapreduce示例
- 存储过程
- 前端面试题汇总--基础篇
- MS-DOS命令