LeetCode - 191 - 位1的个数(number-of-1-bits)

栏目: IT技术 · 发布时间: 6年前

内容简介:LeetCode - 191 - 位1的个数(number-of-1-bits)

Create by jsliang on 2019-07-08 16:16:00
Recently revised in 2019-07-08 16:29:25

一 目录

不折腾的前端,和咸鱼有什么区别

| 目录 | | --- | | 一 目录 | | 二 前言 | | 三 解题 | | 四 执行测试 | | 五 LeetCode Submit | | 六 知识点 | | 七 解题思路 |

二 前言

  • 难度:简单

  • 涉及知识:位运算

  • 题目地址:https://leetcode-cn.com/problems/number-of-1-bits/

  • 题目内容

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

  2. 示例 1

  3. 输入:00000000000000000000000000001011

  4. 输出:3

  5. 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'

  6. 示例 2

  7. 输入:00000000000000000000000010000000

  8. 输出:1

  9. 解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'

  10. 示例 3

  11. 输入:11111111111111111111111111111101

  12. 输出:31

  13. 解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'

  14.  

  15. 提示:

  16. 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。

  17. Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3

  18.  

  19. 进阶:

  20. 如果多次调用这个函数,你将如何优化你的算法?

三 解题

小伙伴可以先自己在本地尝试解题,再回来看看 jsliang 的解题思路。

  • 解题代码

  1. var hammingWeight = function (n) {

  2. return ((n.toString(2)).match(/1/g) || []).length;

  3. };

四 执行测试

  1. n: 00000000000000000000000000001011

  2. return: 3

五 LeetCode Submit

  1. Accepted

  2. 601/601 cases passed (96 ms)

  3. Your runtime beats 70.51 % of javascript submissions

  4. Your memory usage beats 20.53 % of javascript submissions (35.1 MB)

六 知识点

toString()toString() 返回一个字符串,表示指定的数组及其元素。 toString() 详细介绍

七 解题思路

精辟的一行代码,能解决问题就是王道

在这次解答中,我们需要明确的是:

  1. n 是一个整数,所以进来需要转换成 二进制 数:即 n.toString(2)

  2. 有可能 n 是空的

  3. 如果 n 有长度,则通过 match(/1/g) 来匹配其中的 1,它会返回一个数组。

  1. var hammingWeight = function (n) {

  2. return ((n.toString(2)).match(/1/g) || []).length;

  3. };

这样,我们就拿到了最终的结果。

看到这么快就完了,小伙伴可能想:jsliang 又水了一篇,额O__O "…我能怎么办,我也很绝望啊:

  1. 我不喜欢搞二进制,比较无聊。

  2. 这种题在前端业务代码中的体现,真的非常非常非常少,实用性不大。

所以,小伙伴们可以自行探索,如果有不错的题解,可以私聊我或者直接留言。

参考代码 1

  1. var hammingWeight = function (n) {

  2. return n.toString(2).replace(/0/g, '').length;

  3. };

参考代码 2

  1. var hammingWeight = function (n) {

  2. let c = 0;

  3. while (n != 0) {

  4. n = n & n - 1;

  5. c++;

  6. }

  7. return c;

  8. };


不折腾的前端,和咸鱼有什么区别!

LeetCode - 191 - 位1的个数(number-of-1-bits)

jsliang 会每天更新一道 LeetCode 题解,从而帮助小伙伴们夯实原生 JS 基础,了解与学习算法与数据结构。

扫描上方二维码,关注 jsliang 的公众号,让我们一起折腾!

LeetCode - 191 - 位1的个数(number-of-1-bits)

jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于https://github.com/LiangJunrong/document-library上的作品创作。
本许可协议授权之外的使用权限可以从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处获得。



以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入解析Spring MVC与Web Flow

深入解析Spring MVC与Web Flow

Seth Ladd、Darren Davison、Steven Devijver、Colin Yates / 徐哲、沈艳 / 人民邮电出版社 / 2008-11 / 49.00元

《深入解析Spring MVCgn Web Flow》是Spring MVC 和Web Flow 两个框架的权威指南,书中包括的技巧和提示可以让你从这个灵活的框架中汲取尽可能多的信息。书中包含了一些开发良好设计和解耦的Web 应用程序的最佳实践,介绍了Spring 框架中的Spring MVC 和Spring Web Flow,以及着重介绍利用Spring 框架和Spring MVC 编写Web ......一起来看看 《深入解析Spring MVC与Web Flow》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具