java实现《剑指offer》11~20 更新中
Posted 芬乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现《剑指offer》11~20 更新中相关的知识,希望对你有一定的参考价值。
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 更新中的主要内容,如果未能解决你的问题,请参考以下文章
算法---- Leetcode剑指offer-Java版题解