博客
关于我
LeetCode0190. 颠倒二进制位
阅读量:302 次
发布时间:2019-03-03

本文共 811 字,大约阅读时间需要 2 分钟。

为了正确颠倒给定的32位无符号整数的二进制位,我们可以采用以下优化方法:

方法一:拼接反转法

  • 解题思路:将输入的数字转换为二进制字符串,去掉前缀“0b”,补足到32位,反转字符串,然后将反转后的字符串转换为整数。
  • 解题代码
    def reverseBits(self, n: int) -> int:    n = n & 0xFFFFFFFF  # 确保n是32位    bin_str = bin(n)[2:]  # 去掉0b前缀    bin_str = bin_str.zfill(32)  # 补足到32位    reversed_str = bin_str[::-1]  # 反转字符串    return int(reversed_str, 2)
  • 分析:时间复杂度O(1),空间复杂度O(1)。
  • 方法二:逐位处理法

  • 解题思路:将输入的数字转换为32位二进制字符串,逐位从右向左计算结果。
  • 解题代码
    def reverseBits(self, n: int) -> int:    n = n & 0xFFFFFFFF  # 确保n是32位    bin_str = bin(n)[2:]  # 去掉0b前缀    bin_str = bin_str.zfill(32)  # 补足到32位    result = 0    for bit in reversed(bin_str):        result = (result << 1) | int(bit)    return result
  • 分析:时间复杂度O(1),空间复杂度O(1)。
  • 优化说明

    • 限制32位:使用n & 0xFFFFFFFF确保输入在32位范围内。
    • 补足零:使用zfill(32)确保二进制字符串为32位。
    • 反转处理:通过字符串反转或逐位处理,确保结果正确。

    这两种方法均能在常数时间内完成任务,适用于所有32位无符号整数情况。

    转载地址:http://qium.baihongyu.com/

    你可能感兴趣的文章
    nginx负载均衡和反相代理的配置
    查看>>
    nginx负载均衡器处理session共享的几种方法(转)
    查看>>
    nginx负载均衡的5种策略(转载)
    查看>>
    nginx负载均衡的五种算法
    查看>>
    nginx转发端口时与导致websocket不生效
    查看>>
    Nginx运维与实战(二)-Https配置
    查看>>
    Nginx配置Https证书
    查看>>
    Nginx配置ssl实现https
    查看>>
    Nginx配置TCP代理指南
    查看>>
    Nginx配置——不记录指定文件类型日志
    查看>>
    nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    nginx配置全解
    查看>>
    Nginx配置参数中文说明
    查看>>
    nginx配置域名和ip同时访问、开放多端口
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    Nginx配置文件nginx.conf中文详解(总结)
    查看>>
    Nginx配置负载均衡到后台网关集群
    查看>>