leetcode 刷题篇 java 二进制位1的个数

news/2024/6/30 12:54:17

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。

提示:

请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。

 

 

 

public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
        int count = 0;
        while(n!=0){
            if((n&1)==1){
                count++;
            }
            n>>>=1;
        }
        return count;
    }
}

通过判断n是否为0可以大大减少运行时间:

例如,如果用for循环,需要遍历32次,如果碰上很小的数,比如1,3,19,200,之类的,远远小于2^32;

这个时候只需要判断n为0,就停止,每次比较后右移一位,可加快运行速度;

(p.s. 终于开始用java刷题了,用c语言刷题对某些类型的题目还真不好写,比如用hash表的,等等)


http://www.niftyadmin.cn/n/3651741.html

相关文章

Python Cookbook 第二版 汉化版 [Recipe 16.4] 将参数与函数关联起来(Currying)

Recipe 16.4. Associating Parameters with a Function (Currying)Recipe 16.4. 将参数与函数关联起来(Currying)(译注:本条目中出现“parameter”和“argument”两种字眼。其中的“parameter”似乎并不强调“形参”意味&#xff…

无重复字符的最长子串 leetcode java篇

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度 class Solution {public int lengthOfLongestSubstring(String s) {int[] map new int[127];// map {0};char[] arr s.toCharArray();int len arr.length;int l 0;int r 0;int max 0;while(…

Python Cookbook 第二版 汉化版 [Recipe 1.1] 逐个处理字符串中的各个字符

Recipe 1.1. Processing a String One Character at a TimeRecipe 1.1. 逐个处理字符串中的各个字符Credit: Luther Blissett[问题]您想逐个处理字符串中的各个字符。[解法]您可以构建一个列表,其中每个元素存放一个字符串中的字符(由于 Python 中没有用…

整数反转 leetcode java篇

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 class Solution {public …

Python Cookbook 第二版 汉化版 [00-2-Preface] Part 1

序言本书并非典型的 OReilly 图书。典型的 OReilly 图书是由一两位作者写就的完整文稿;而本书则不然,本书是一种新的“将开源软件开发原则应用于图书创作”的大胆尝试。Python 社区的300多位成员为本书内容作出了贡献。在本序言中,我们&#…

有效的括号 leetcode java篇

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 class Solution {public boolean isVa…

ruoyi若依 组织架构设计--[ 部门管理 ]

ruoyi若依 组织架构设计--[ 部门管理 ] 部门管理部门查询部门新增部门修改部门删除 部门管理 部门查询 需要注意的是,部门管理也有数据权限,比如A用户分配的数据权限(通过角色分配)是深圳总公司,那么A用户登录后看到的部门也是深圳总公司&am…

在排序数组中查找元素的第一个和最后一个位置 java篇 leetcode

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗&#xff1…