我是靠谱客的博主 积极橘子,这篇文章主要介绍算法题 位1的个数(简单题),现在分享给大家,希望可以做个参考。

题目描述:

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

例题描述:

题目分析:

 题目的要求很简单,就是要求将输入的32位无符号整数中含有1的个数统计出来
 

解题思路:

当我拿到这道题目的时候,我首先想到的是通过将他拆分为数组,一个一个的循环判断来做,这样的作法是没有问题的,但是可能是平台的隐藏要求?还是什么的,这种方法得出来的结果在vs code上运行的和在力扣上运行的是完全不一样的,我盲目猜测,也许是他将这个数当成了有符号数?原因我还没有找到,找到的朋友可以私信一下我(万分感谢)

代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
var hammingWeight = function(n) { var count=0 var num =n.toString() var nums =num.split('') for(var i in nums){ if(nums[i] !=0){ count++ } } return count }

代码的逻辑非常的简单,就是将他先化为字符串,在化为数组,之后判断即可

因为这种方法无法得到答案,所以我又换了一个做法

我想到了位移的那个运算

解题思路:

同样还是通过一样的逻辑

代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
var hammingWeight = function(n) { var count=0 while(n){ if(n&1){ count++ } n=n >>>1 } return count };

唯一改变的地方在于判断结束之后,需要去掉最后一位,不断地判断,知道n为0

最后

以上就是积极橘子最近收集整理的关于算法题 位1的个数(简单题)的全部内容,更多相关算法题内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部