首页 > 其他分享 >力扣刷题Days16 - 191.位1的个数(js)

力扣刷题Days16 - 191.位1的个数(js)

时间:2024-03-15 19:59:19浏览次数:29  
标签:count 运算 191 number Days16 js let 2.1 逐位

目录

1,题目

2,代码

2.1逐位判断

核心代码

2.1.2逐位判断2

2.2位运算优化

3,学习与总结


1,题目

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

2,代码

2.1逐位判断

/**
 * @param {number} n - a positive integer
 * @return {number}
 */
var hammingWeight = function(n) {
    // 逐位判断
    let count = 0;
    for(let i=0;i<32;i++){
        if(n>>i &1){
            count++;
        }
    }
    return count;
    
};
核心代码

    for(let i=0;i<32;i++){
        if(n>>i &1){
            count++;
        }
    }

2.1.2逐位判断2

var hammingWeight = function(n) {
    let count = 0;
    for (let i = 0; i < 32; i++) {
        if ((n & (1 << i)) !== 0) {
            count++;
        }
    }
    return count;
};

2.2位运算优化

/**
 * @param {number} n - a positive integer
 * @return {number}
 */
var hammingWeight = function(n) {
    // 位运算优化
    let count = 0;
    while(n){
        n &= n-1;
        count++;
    }
    return count;
    
};

3,学习与总结

总结

(1)运用了昨天学习的位运算,自己实现了第一种方法 : 逐位判断;

(2)学习了位运算的性质:

n & (n−1),其运算结果恰为把 n 的二进制位中的最低位的 1 变为 0 之后的结果。

如:

6 & (6−1)=4,

6=(110),4=(100)

6 & (6−1)=4,
​运算结果 4 即为把 6 的二进制位中的最低位的 1 变为 0 之后的结果。

标签:count,运算,191,number,Days16,js,let,2.1,逐位
From: https://blog.csdn.net/m0_51666362/article/details/136631627

相关文章

  • nicetool--替代hutool和fastjson的工具库
    ​前言如果你被hutool坑过、被fastjson坑过,nicetool帮你解脱!如果你想用稳定、Spring原生的工具类,nicetool已帮你封装!nicetool不生产工具,只是JDK和Spring的封装侠!介绍nicetool:超好用的Java工具类:稳定、方便。最大程度利用SpringBoot原生工具。官网:https://www.yuque.com/kni......
  • iOS端创建ReactNative容器第一步:打出jsbundle和资源包
    react-native的打包流程是通过执行react-nativebundle指令进行的。 添加构建指令修改RN项目中的package.json文件,先其中添加构建命令build-release-ios和build-debug-ios"scripts":{"android":"react-nativerun-android","ios":"react-nativerun-ios"......
  • PgSql jsonb类型查询
    十年河东,十年河西,莫欺少年穷学无止境,精益求精json函数及操作,详情请参考:http://www.postgres.cn/docs/12/functions-json.html表结构如下:createtablechargeing(idUUIDprimarykeynotnull,heartjsonbnotnull,createtimetimestampnotnull);createindex......
  • 2024前端 JS面试题
    目录1,JS数据类型2,JS两种数据类型1,基本数据类型1,基本数据类型的值不可变2,基本数据类型不可以添加属性和方法:3,基本数据类型的赋值是简单的赋值4,基本数据类型的比较是值的比较:5,基本数据类型的值存放在栈内存中6,基本数据类型详解1,undefined2,Null3,string4,Number5,Bo......
  • node.js服务器
    Node.js发布于2009年5月,由RyanDahl开发,是一个基于ChromeV8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,[1]让JavaScript运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。简单来说,就是让原本运行在客户端......
  • JS DOM操作(三)
    1.操作节点获取节点属性:语法getAttribute(“属性名”);varvalue=element.getAttribute("data-custom");//请注意,获取节点属性时,如果属性不存在,则会返回null2.设置节点属性:语法setAttribut(“属性名”,“属性值”);element.setAttribute("data-custom","val......
  • JS DOM操作(一)
    .#1.DOM操作分类1.1DOMcore(核心操作)document:表示整个文档,可以用于访问文档的各个部分和属性。Element:表示HTML元素,提供了访问和操作元素的方法和属性。Node:表示文档中的节点,包括元素、文本节点、注释等,提供了节点通用的方法和属性。1.2HTML-DOM获取元素:通过ID、类......
  • fastjson1.2.24-RCE漏洞复现
    触发过程图靶场模拟1、实验环境准备攻击者kali(192.168.101.141)使用工具:marshalsec-0.0.3-SNAPSHOT-all.jarGitHub-RandomRobbieBF/marshalsec-jar:marshalsec-0.0.3-SNAPSHOT-allcompiledonX64被攻击者centos7(192.168.101.148)使用工具:dockerdocker-compose......
  • MirageJS 使用总结 vue2上亲测使用
    注:MirageJS英文文档看的头疼,且百度上都是片段比较多,本着拿来主义的思路,就把代码粘贴上,这样不仅方便自己,也能方便大家简单介绍一下他的好处及功能MirageJS是一个用于模拟服务器端数据和网络请求的JavaScript库,它可以帮助开发者在前端环境中创建假数据、定义路由和处理请求。......
  • MeterSphere接口自动化系列之JSONPath常用提取方式
    一、使用场景        针对接口返回结果,提取相应的信息,用于后续接口输入或用于执行结果断言,对应平台的后置操作、断言规则页签。        二、常用方式实例接口返回结果{"code":0,"data":{"cart":{"id":"34253627754......