【劍指offer記念版】--10 進制1的個數

10. 題目

題目:請實現一個函數,輸入一個整數,輸出該數二進制表示中1的個數。例如把9表示成二進制是1001,有2位是1。所以若是輸入9,該函數輸出2。java

解題思路

  把一個整數減去1,再和原整數作與運算,會把該整數最右邊一個1變成0。那麼一個整數的二進制表示中有多少個1,就能夠進行多少次這樣的操做。函數

代碼

package aigorithm;

public class CodingInterviewsTen {
    public static void main(String[] args) {
        int result = NumberOf1Solution10(2);
        System.out.println(result);
    }

    public static int NumberOf1Solution10(int n ){
        int count = 0;

        while (n>0){
            ++count;
            n = (n-1)&n;
        }
        return count;
    }
}

感想

作到這題的時候,發現本身的思想在被做者的想法限制。在已有是思路下突破是一件困難的事情啊。深入以爲本身的想法不夠發散。code

相關文章
相關標籤/搜索