publicclassTest10{publicstaticintnumberofone(int n){int res =0;while(n!=0){
res +=(n&1);
n >>>=1;}return res;}publicstaticintnumberofone1(int n){int res =0;while(n!=0){
res ++;
n =(n-1)&n;}return res;}publicstaticvoidmain(String[] args){System.out.println(numberofone(0B00000000_00000000_00000000_00000000));// 0System.out.println(numberofone(0B00000000_00000000_00000000_00000001));// 1System.out.println(numberofone(0B11111111_11111111_11111111_11111111));// -1System.out.println(0B01111111_11111111_11111111_11111111==Integer.MAX_VALUE);System.out.println(numberofone(0B01111111_11111111_11111111_11111111));// Integer.MAX_VALUESystem.out.println(0B10000000_00000000_00000000_00000000==Integer.MIN_VALUE);System.out.println(numberofone(0B10000000_00000000_00000000_00000000));// Integer.MIN_VALUESystem.out.println("");System.out.println(numberofone1(0B00000000_00000000_00000000_00000000));// 0System.out.println(numberofone1(0B00000000_00000000_00000000_00000001));// 1System.out.println(numberofone1(0B11111111_11111111_11111111_11111111));// -1System.out.println(numberofone1(0B01111111_11111111_11111111_11111111));// Integer.MAX_VALUESystem.out.println(numberofone1(0B10000000_00000000_00000000_00000000));// Integer.MIN_VALU}}
第十六题-数值的整数次方
publicclassTest11{publicstaticdoublepower(double base,int e){if(base ==0&& e==0)thrownewRuntimeException("invalid");//指数为0if(e ==0)return1;//指数为1if(e ==1)return base;//求指数的绝对值int exp = e;if(exp <0){
exp =-exp;}double res =powerWithUnsigned(base,exp);if(e <0){
res =1/res;}return res;}publicstaticdoublepowerWithUnsigned(double base,int e){if(e ==0)return1;if(e ==1)return base;double res =powerWithUnsigned(base,e>>1);
res = res*res;if(e %2!=0)//如果是奇数还需要在×一个base
res *= base;return res;}publicstaticvoidmain(String[] args){System.out.println(power(2,-4));System.out.println(power(2,4));System.out.println(power(2,0));System.out.println(power(0.0000000000000000000001,-1));System.out.println(power(0.0000000000000000000001,1));System.out.println(power(0.0000000000000000000001,0));System.out.println(power(0.0000000000000000000000,0));}}
第十七题-打印1到最大的n位数
importjava.util.Arrays;publicclassTest12{//打印1到最大的n位数的主方法publicstaticvoidprintToMaxOfDigits(int n){if(n <=0){System.out.println("invalid");return;}char number[]=newchar[n];Arrays.fill(number,'0');//数组全部填充为0for(int i =0; i <10;++i){
number[0]=(char)(i +'0');//首位数字printToMaxOfNDigitsRecursively(number, n,0);}}//利用递归实现1到最大的n位数的全排列publicstaticvoidprintToMaxOfNDigitsRecursively(char[] number,int n,int index){if(index == n -1){//到了最后一位,当前首位数字的全排列结束printNumber(number);//打印return;}for(int i =0; i <10;++i){
number[index +1]=(char)(i +'0');//进行全排列printToMaxOfNDigitsRecursively(number, n, index +1);}}//输出privatestaticvoidprintNumber(char[] number){boolean falg =true;int nLength = number.length;for(int i =0; i < nLength;++i){if(falg && number[i]!='0'){//防止首位为0
falg =false;}if(!falg){System.out.print(number[i]);}}System.out.println();}publicstaticvoidmain(String[] args){printToMaxOfDigits(2);}}
剑指offer 11-20题文章目录剑指offer 11-20题第十一题-斐波契那数列第十二题-矩阵中的路径第十三题-机器人的运动范围第十四题-剪绳子第十五题:二进制中1的个数第十六题-数值的整数次方第十七题-打印1到最大的n位数第十八题-在O(1)时间删除链表节点第十九题-正则表达式匹配第二十题-表示数值的字符串第十一题-斐波契那数列public class Test09 { public static int F(int n){ if(n <= 0) return