zoukankan      html  css  js  c++  java
  • 191. Number of 1 Bits

    原题链接:https://leetcode.com/problems/number-of-1-bits/description/
    实现如下:

    /**
     * Created by clearbug on 2018/2/26.
     */
    public class Solution {
    
        public static void main(String[] args) {
            Solution s = new Solution();
            System.out.println(s.hammingWeight(2147483647));
            System.out.println(s.hammingWeight(2));
            System.out.println(s.hammingWeight(3));
            System.out.println(s.hammingWeight(11));
        }
    
        // 官方答案二:利用了一些规律性手段来提高效率
        public int hammingWeight(int n) {
            int sum = 0;
            while (n != 0) {
                sum++;
                n &= (n - 1);
            }
            return sum;
        }
    
        // 官方答案一
        public int hammingWeight2(int n) {
            int bits = 0;
            int mask = 1;
            for (int i = 0; i < 32; i++) {
                if ((n & mask) != 0) {
                    bits++;
                }
                mask <<= 1;
            }
            return bits;
        }
    
        // you need to treat n as an unsigned value
        public int hammingWeight1(int n) {
            // 哈哈,接受了上一题的洗礼,这一题就很简单啦!你要问上一题是什么?请看下面参考内容吧!
            // 奶奶的,以为这个答案是必过的,谁知官方系统不按常理出牌,测试用例里面竟然有:2147483648(没错,就是比 Integer.MAX_VALUE 还要大一)
            // 没办法了,参考官方答案吧!
            int res = 0;
            for (int i = 0; i < 32 && n > 0; i++) {
                if ((n & 1) == 1) {
                    res++;
                }
                n >>>= 1;
            }
            return res;
        }
    
    }
    

    参考

    http://www.cnblogs.com/optor/p/8688394.html

  • 相关阅读:
    九九乘法表
    计算器界面
    3.2封装的日期类
    杨辉三角
    100以内的素数
    九九 乘法表
    七、logging模块
    六、MySQLdb 模块
    四、浏览器运行模式
    五、configparser模块
  • 原文地址:https://www.cnblogs.com/optor/p/8688662.html
Copyright © 2011-2022 走看看