Re: [闲聊] 每日LeetCode

楼主: ZooseWu (N5)   2023-11-29 11:07:50
191. Number of 1 Bits
检查输入进来的数字有几个bit是1
Input: n = 00000000000000000000000000001011 Output: 3
Input: n = 00000000000000000000000010000000 Output: 1
Input: n = 11111111111111111111111111111101 Output: 31
Intuition:
用位元运算符计算尾数是不是1就好
Approach:
我本来以为这一题超简单
结果我被TS搞了两次
一次是我用递回去写结果超过推叠上限
后来才查了才知道js不支援tail call
所以我就改用循环
结果还遇到另一个问题
js的number位数可以到53位
但是拿去做位元运算符会强制降成31位数的数字
所以第32位数字要另外手动处理
TS Code:
function hammingWeight (n: number): number {
let result = 0
if (n >= 2147483648) {
n = n - 2147483648
result = 1
}
while (n > 0) {
result += n & 1
n = n >> 1
}
return result
}
作者: oin1104 (是oin的说)   2023-11-29 11:24:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com