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段存储,节省空间。

results matching ""

    No results matching ""