当前位置: 首页 > news >正文

【位运算】leetcode 190. 颠倒二进制位

190. 颠倒二进制位

文章目录

  • 题目描述
    • 示例1:
    • 示例2:
    • 提示
  • 方法:位运算
    • 解题思路
    • 代码
    • 复杂度分析

题目描述

颠倒给定的 32 位无符号整数的二进制位。

示例1:

输入: n = 00000010100101000001111010011100
输出: 964176192 (00111001011110000010100101000000)
解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。

示例2:

输入: n = 11111111111111111111111111111101
输出: 3221225471 (10111111111111111111111111111111)
解释: 输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,因此返回 3221225471 其二进制表示形式为 10111111111111111111111111111111 。

提示

  • 请注意,在某些语言(如 J a v a )中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 请注意,在某些语言(如Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
  • 在 J a v a 中,编译器使用二进制补码记法来表示有符号整数。因此,在示例 2 中,输入表示有符号整数 − 3 ,输出表示有符号整数 − 1073741825 。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。 Java中,编译器使用二进制补码记法来表示有符号整数。因此,在示例2中,输入表示有符号整数3,输出表示有符号整数1073741825

方法:位运算

解题思路

将无符号整数 n 的逆序数的二进制表示保存于数组中,然后再将它转换成无符号整数。

代码

class Solution {
public:
    uint32_t reverseBits(uint32_t n) {
        vector<int> arr(32);
        for(int i = 31; i >= 0; i--) 
            arr[i] = n >> i & 1;
        uint32_t res = 0;
        for(int i = 0; i < 32; i++)
            res = res * 2 + arr[i];
        return res;
    }
};

复杂度分析

  • 时间复杂度: O ( l o g n ) O(logn) O(logn)
  • 空间复杂度: O ( 32 ) O(32) O(32)

相关文章:

  • nexus on k8s最佳实战
  • LeetCode 每日一题 2022/8/29-2022/9/4
  • webpack定制化 高级配置[热更新、热打包、别名、调试]
  • 外贸员需要知道的那些事儿
  • c++11 多线程支持 (std::shared_future)
  • webpack定制化 基础配置[基础、配置、初运行]
  • mysql基本语句:DQL(数据查询语言)
  • Android | 通过URL获取网络图片Bitmap格式
  • SpringCloud-01 Rest学习环境搭建笔记
  • 基于APB与I2C的多主多从架构设计 - Function Description
  • R语言 ggdendro_谱系图
  • Kafka原理及概念解释
  • Springboot-自定义Spring Boot Starter并推送到远端公服
  • 《奔跑吧,程序员:从零开始打造产品、技术和团队》 读书笔记
  • PHP - 各版本对比 - 整理
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 《深入 React 技术栈》
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Android 架构优化~MVP 架构改造
  • egg(89)--egg之redis的发布和订阅
  • ERLANG 网工修炼笔记 ---- UDP
  • golang中接口赋值与方法集
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Spring Cloud Feign的两种使用姿势
  • Spring-boot 启动时碰到的错误
  • storm drpc实例
  • text-decoration与color属性
  • Twitter赢在开放,三年创造奇迹
  • Vue官网教程学习过程中值得记录的一些事情
  • 闭包--闭包作用之保存(一)
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 如何在 Tornado 中实现 Middleware
  • 入口文件开始,分析Vue源码实现
  • 收藏好这篇,别再只说“数据劫持”了
  • 用Canvas画一棵二叉树
  • HanLP分词命名实体提取详解
  • Python 之网络式编程
  • ​虚拟化系列介绍(十)
  • #Ubuntu(修改root信息)
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (Git) gitignore基础使用
  • (八)c52学习之旅-中断实验
  • (附源码)ssm码农论坛 毕业设计 231126
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (全注解开发)学习Spring-MVC的第三天
  • *上位机的定义
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .net mvc 获取url中controller和action
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .Net小白的大学四年,内含面经
  • .pop ----remove 删除
  • .py文件应该怎样打开?