每天一道LeetCode-----计算给定范围内所有数的与运算结果
生活随笔
收集整理的這篇文章主要介紹了
每天一道LeetCode-----计算给定范围内所有数的与运算结果
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Bitwise AND of Numbers Range
原題鏈接Bitwise AND of Numbers Range
計算[m:n][m:n]范圍內的所有數的與運算結果
首先需要明確幾個知識點
- a&(a+1)a&(a+1)的最低位一定是0
- 0&b0&b的結果一定是0
- a&(a+1)&(a+2)&...&(a+k)a&(a+1)&(a+2)&...&(a+k)的最低 位一定是0
所以如果n > m,那么[m:n][m:n]范圍內所有元素的與運算結果的最低位一定是0,于是有
all_nums_and(m, n) = all_nums_and(m >> 1, n >> 1) << 1其中all_nums_and(m, n)表示[m:n][m:n]范圍內所有元素的與運算結果
代碼如下
class Solution { public:int rangeBitwiseAnd(int m, int n) {return n <= m ? m : rangeBitwiseAnd(m >> 1, n >> 1) << 1; } }; 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的每天一道LeetCode-----计算给定范围内所有数的与运算结果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP/IP学习笔记(九)TCP报文段首
- 下一篇: 每天一道LeetCode-----判断一