java實現《劍指offer》(二)11~20 更新中
阿新 • • 發佈:2018-04-23
整數次方 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 classSolution { 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 更新中