[leetcode] 190. Reverse Bits
2016-07-28 13:00
302 查看
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
解法一:
自己看吧,傻白甜做法。。。
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res=0;
vector<uint32_t> values(32,0);
bit32_value(values);
int i = 0;
while(n){
res += (n%2)*values[i++];
n = n/2;
}
return res;
}
void bit32_value(vector<uint32_t> &values){
for(int i= 0; i<32; ++i)
values[i] = pow(2,31-i);
}
};
解法二:
一遇到bit,就应该想到bit operation。n右移,res左移。如果n当前位为1(用n&1判断), res对应位也该为1。
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res = 0;
for(int i=0; i<32; ++i){
if (n&1==1) res = (res<<1) + 1;
else res = res<<1;
n = n >> 1;
}
return res;
}
};
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
解法一:
自己看吧,傻白甜做法。。。
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res=0;
vector<uint32_t> values(32,0);
bit32_value(values);
int i = 0;
while(n){
res += (n%2)*values[i++];
n = n/2;
}
return res;
}
void bit32_value(vector<uint32_t> &values){
for(int i= 0; i<32; ++i)
values[i] = pow(2,31-i);
}
};
解法二:
一遇到bit,就应该想到bit operation。n右移,res左移。如果n当前位为1(用n&1判断), res对应位也该为1。
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res = 0;
for(int i=0; i<32; ++i){
if (n&1==1) res = (res<<1) + 1;
else res = res<<1;
n = n >> 1;
}
return res;
}
};
相关文章推荐
- RM格式压缩电影软件 Easy RealMedia Producer Full V1.94 下载
- 在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
- 比较简单的jquery教程 Easy Ajax with jQuery 中文版全集第1/3页
- Easy RM RMVB to DVD Burner v1.3.8 汉化版 下载 附注册码
- Expandable "Detail" Table Rows
- linux下安装easy_install的方法
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- python在Windows下安装setuptools(easy_install工具)步骤详解
- 归纳整理文件Easy Duplicate Finder2.24 破解版
- DM*** and Easy *** Server with ISAKMP Profiles
- easy ***
- cisco packet tracer 5.3 实现基于3A的easy ***
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart