首页 > 其他分享 >【剑指 Offer】 15. 二进制中1的个数

【剑指 Offer】 15. 二进制中1的个数

时间:2023-04-11 12:22:30浏览次数:32  
标签:15 符号 二进制 Offer 示例 整数 res 输入

【题目】

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

 

提示:

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

 

示例 1:

输入:n = 11 (控制台输入 00000000000000000000000000001011)
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。

示例 2:

输入:n = 128 (控制台输入 00000000000000000000000010000000)
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。

示例 3:

输入:n = 4294967293 (控制台输入 11111111111111111111111111111101,部分语言中 n = -3)
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。

 
提示:

    输入必须是长度为 32 的 二进制串 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof

 

【思路】

n&(n-1)可以消去最右边的一个1,反复这个过程,最后值为0,进行多少次就有多少个1

 

 【代码】

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

 

标签:15,符号,二进制,Offer,示例,整数,res,输入
From: https://www.cnblogs.com/End1ess/p/17305825.html

相关文章

  • 【剑指 Offer】 33. 二叉搜索树的后序遍历序列
    【题目】输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:    5   /\  2  6 /\ 1  3示例1:输入:[1,6,3,2,5]输出:false示例2:输入:......
  • 15.4折半查找原理及实战
    #include<stdio.h>#include<stdlib.h>#include<time.h>typedefintElemType;typedefstruct{ElemType*elem;//整型指针intTableLen;//存储动态数组里边元素的个数}SSTable;//init进行了随机数生成,折半查找没有使用哨兵voidST_Init(SSTable&ST,i......
  • 剑指offer38(Java)-字符串的排列(中等)
    题目:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例:输入:s="abc"输出:["abc","acb","bac","bca","cab","cba"] 限制:1<=s的长度<=8来源:力扣(LeetCode)链接:https://leetcode.cn/pr......
  • 15.3顺序查找及实战
    #include<stdio.h>#include<stdlib.h>#include<time.h>typedefintElemType;typedefstruct{ElemType*elem;//整型指针,申请的堆空间的起始地址存入elemintTableLen;//存储动态数组里边元素的个数}SSTable;voidST_Init(SSTable&ST,intlen){//......
  • 3500/15 133292-01 到达时间预测解决方案阶段
    3500/15133292-01到达时间预测解决方案阶段今天,墨西哥的公共交通系统不具有提供信息来确定公共汽车的到达时间或者知道到达用户的公共汽车站的下一辆公共汽车上是否有空位的功能。这一信息与墨西哥城市密切相关,那里每天都有数百万用户需要移动。所提出的解决方案基于这样的事实......
  • 3500/15 127610-01 对于高性能市场中的云计算
    3500/15127610-01对于高性能市场中的云计算对于高性能市场中的云计算,产品设计将基于性能。在PC系统架构方面,PCIe4.016G和即将推出的PCIe5.032G有一些主要的技术改进。CXL基于PCIe4.0,以增强该结构中的高速组件。面向云计算的网络切片、网络功能虚拟化(NFV)和面向5G边缘服务......
  • 用 Go 剑指 Offer 12. 矩阵中的路径
    给定一个 mxn二维字符网格 board和一个字符串单词 word。如果 word存在于网格中,返回true;否则,返回false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例如,......
  • CF1525F 题解
    题意有一个\(n\)个点的DAG,现在有\(k\)波进攻,第\(i\)波有\(i\)个人,它们每个人会选择一条DAG上的路径,并占领这个路径上的所有点,路径之间是不能相交的。第\(i\)波进攻前可以做一些准备,可以花\(1\)秒关闭某个点的所有入边,或关闭某个点的所有出边。第\(i\)波进攻有个......
  • 用 Go 剑指 offer:面试题61. 扑克牌中的顺子
    从若干副扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为0,可以看成任意数字。A不能视为14。 示例 1:输入:[1,2,3,4,5]输出:True 示例 2:输入:[0,0,1,2,5]输出:True 限制:数组长度为5 数组的......
  • Qt 数据的进制转换:二进制、十进制和十六进制
    将一个整数转换为不同进制的字符串,可以使用QString的函数setNum()或静态函数number(),函数原型为:1QString&setNum(intn,intbase=10)2QStringnumber(intn,intbase=10)其中n是待转换的整数,base是使用的进制,缺省为十进制,也可以指定为十六进制和二进制。以读取二进制字符......