Re: [闲聊] 每日LeetCode

楼主: sustainer123 (caster)   2023-11-29 16:01:28
※ 引述《ZooseWu (动物园 公告)》之铭言:
: 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
: }
Python Code:
class Solution:
def hammingWeight(self, n: int) -> int:
return bin(n).count("1")
满简单的
直接count()启动
发现int不能直接count
所以转成二进制
不过分数超烂 等等研究解答

Links booklink

Contact Us: admin [ a t ] ucptt.com