博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
清晨起来,几道小题
阅读量:6695 次
发布时间:2019-06-25

本文共 1186 字,大约阅读时间需要 3 分钟。

题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1。因此,如果输入9,则该函数输出2。

public class Solution {    public int NumberOf(int num) {        int count = 0;        while (num != 0) {            if ((num & 1) == 1) {                count++;            }            num = num >>> 1;    //如果使用>>有符号右移,那么符号位1永远会存在,也就是会产生死循环        }    }}复制代码

实现函数Math.pow,求m的n次方。

public class Solution {    public double pow(int m, int n) {        double result = 0;        if (m == 0 && n < 0) {            return -1;        }        int absN = Math.abs(n);        result = calc(m, absN);        if (n < 0) {            result = 1 / result;        }        return result;    }        private int calc(int m, int n) {        int result = 1;        for (int i = 0; i < n; i++) {            result *= m;        }        return result;    }}复制代码

改进calc

private int calc(int m, int n) {   if (n == 0) {       return 1;   }   if (n == 1) {       return m;   }   int result = calc(m, n >> 1);    //右移1位表示除以2   result *= result;   if ((m & 1) == 1) {     //位运算判断是会否为奇数,奇数的二进制第一位一定是1与1做与运算即可判断是否为奇数,代替m%2是否等于0       result *= m;   }   return result;}复制代码

不积跬步无以至千里。

转载于:https://juejin.im/post/5d0c1fc4f265da1bbd4b7c61

你可能感兴趣的文章
照片美妆---人脸老化
查看>>
zabbix3.2升级3.4报错Database error
查看>>
在C#中使用官方驱动操作MongoDB
查看>>
《精通javascript》几个简单的函数(一)
查看>>
XML 编辑器 介绍
查看>>
Makefile 中:= ?= += =的区别【转】
查看>>
linux内核栈与用户栈【转】
查看>>
Thread thread2 = new Thread()
查看>>
Hadoop 概述
查看>>
jquery select
查看>>
[Android] Android统计Apk , jar包方法数
查看>>
[Android Pro] Normal Permissions
查看>>
perl 工具小脚本
查看>>
深入了解STL中set与hash_set,hash表基础
查看>>
SQL存储过程调试
查看>>
42.2. Leaflet
查看>>
Python天天美味(5) - ljust rjust center
查看>>
hdu 1247 Hat’s Words
查看>>
39.6. 硬盘情况
查看>>
[导入]Are Generics in .NET like Templates in C++?
查看>>