201. Bitwise AND of Numbers Range

    xiaoxiao2021-03-25  66

    又是bit操作,可怕,直接暴力求解,超时了==

    class Solution { public: int rangeBitwiseAnd(int m, int n) { int sum=m; for(int i=m+1;i<=n;i++) sum&=i; return sum; } };

    如果考虑连续区间的性质,可能会简化计算过程,将从这一角度对代码进行修正。各种上限的细节要好好考虑,毕竟5次AC,哭==万恶的INT_MAX。

    class Solution { public: int rangeBitwiseAnd(int m, int n) { //cout<<pow(2,30); int upBound; if((int)(log(m)/log(2))+1<=30) { upBound=pow(2,(int)(log(m)/log(2))+1); if(n>=upBound) return 0; else { int sum=m; for(int i=m+1;i<=n;i++) { sum&=i; if(i==INT_MAX) break; } return sum; } } else { int sum=m; if(sum==INT_MAX) return INT_MAX; else { for(int i=m+1;i<=n;i++) { sum&=i; if(i==INT_MAX) break; } return sum; } } } };
    转载请注明原文地址: https://ju.6miu.com/read-33093.html

    最新回复(0)