1. 程式人生 > >java實現《劍指offer》(二)11~20 更新中

java實現《劍指offer》(二)11~20 更新中

整數次方 1的個數 int div class 浮點 ID power num

11、二進制中1的個數

輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。

(1)最優解

 1 public class Solution {
 2     public int NumberOf1(int n) {
 3         int count=0;
 4         while(n!=0){
 5             n = n&(n-1);
 6             count++;
 7     }
 8         return count;
 9     }
10  }

(2)

 1 public class
Solution { 2 public int NumberOf1(int n) { 3 int count=0; 4 int flag=1; 5 while(flag!=0){ 6 if((n&flag)!=0){ 7 count++; 8 } 9 flag = flag<<1; 10 } 11 return count; 12 } 13 }

(3)註意:>>>是右移補0的邏輯右移,>>是右移補符號位的算術右移

 1 public class Solution {
 2     public int NumberOf1(int n) {
 3         int count = 0;
 4         while(n!=0){
 5             if((n&1)==1){
 6                 count++;
 7             }
 8             n = n>>>1;
 9         }
10 return count; 11 } 12 }

12、數值的整數次方

給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。(1)

 1 public class Solution {
 2     public double Power(double base, int exponent) {
 3         if(exponent==0) return 1;
 4         if(exponent<0){
 5             return 1/base*(Power(base, exponent+1));
 6         }else{
 7             return base*(Power(base, exponent-1));
 8         }
 9     }
10 }

java實現《劍指offer》(二)11~20 更新中