public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
if(n == 0)
return 0;
int ans = 0;
for(int i = 0; i < 32; i++){
ans = ans << 1;
ans += (n & 1);
n >>= 1;
}
return ans;
}
}
https://segmentfault.com/a/1190000003483740
Q:如果该方法被大量调用,或者用于处理超大数据(Bulk data)时有什么优化方法?
A:这其实才是这道题的精髓,考察的大规模数据时算法最基本的优化方法。其实道理很简单,反复要用到的东西记下来就行了,所以我们用Map记录之前反转过的数字和结果。更好的优化方法是将其按照Byte分成4段存储,节省空间。