2026/5/18 23:06:55
网站建设
项目流程
网站开发多少钱,成都思乐网站建设,查找域名,免费下载现成ppt网站每天学习一点算法 2026/01/19
题目#xff1a;位1的个数 给定一个正整数 n#xff0c;编写一个函数#xff0c;获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数#xff08;也被称为汉明重量#xff09;。 最容易想到的方法就是#xff0c;遍历二进制字…每天学习一点算法 2026/01/19题目位1的个数给定一个正整数n编写一个函数获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数也被称为汉明重量。最容易想到的方法就是遍历二进制字符串统计 1 的个数找 1 怎么感觉怪怪的functionhammingWeight(n:number):number{conststrn.toString(2)letcount0for(letiofstr){if(i1)count}returncount};我们还有一种取巧的方法js 字符串的 split 方法可以分割字符串如果们使用 1 分割字符串那么结果数组长度减一就是 1 的个数function hammingWeight(n: number): number { const str n.toString(2) return str.split(1).length - 1 };我们知道二进制是满二进一那么二进制运算n - 1就是讲最右侧的 1 变成 0让后讲这个 1 右侧的 0 变成 1然后我们对n和n - 1进行运算按位与的规则是只有对应位都为 1 时结果才为 1否则为 0。所以n (n - 1)的结果就会将最右侧的 1 变成 0我们循环执行n n (n - 1)直到 n 变成 0循环次数就是 1 的个数functionhammingWeight(n:number):number{letcount0while(n){n(n-1)count}returncount};题目来源力扣LeetCode