LeetCode201 Bitwise AND of Numbers Range Java 題解

來源:互聯網
上載者:User

標籤:bitwise and   java   leetcode   

題目:

Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.

For example, given the range [5, 7], you should return 4.

解答:

假如說5:101  7:111  連續幾個數相與的規律:一,只要是相同的位置的數字不相同最後那個位置的結果一定是0 。二,如果高位不相同,從不相同的那位到最低位都會為0,例如5和7雖然第0位相同但是由於第一位不相同,所以最後結果第0位 和第一位都為0。  

如果理解了第二個規律就好辦了,如果另個數位元不相同肯定最後結果為0,如果位元相同,從最高位開始尋找,將第一次發現不相同的那一位到最低位都置為0;


代碼中,通過不斷地右移直到兩個數字相等,然後再左移相同的位元,這樣做的效果其實就是將位置不相同的都置為0


代碼:

public static int rangeBitwiseAnd(int m, int n) {

int count=0;
while(m!=n)
{
m=m>>>1;
n=n>>>1;
count++;
}
return m<<count;


        
    }

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

LeetCode201 Bitwise AND of Numbers Range Java 題解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.