leetcode190:颠倒二进制

本文介绍了一种高效反转32位整数二进制表示的方法。通过位运算,逐位检查并反转输入整数的二进制位,最终得到反转后的二进制数。此方法避免了转换为字符串的复杂过程,提高了算法效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思想:

定义变量ans保存反转之后的二进制数,默认是全0。变量mask是1,若mask与n相与为真,则n的二进制形式最后一位为1,此时ans需要和1或,使得当前为二进制为1,反之ans不变即为0。n不断左移(左移的目的是去除最后一位二进制数),直到结束。

class Solution:
    # @param n, an integer
    # @return an integer
    def reverseBits(self, n):
        ans = 0
        mask = 1
        for _ in range(32):
            ans <<= 1
            if mask & n:
                ans |= 1
            n >>= 1
        return ans

之前我的想法是将n转换成二进制表示,然后再反转。但这是确实是麻烦了许多。以上是大佬的想法,值得好好学习!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值