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


    190. 颠倒二进制位

    题目描述

    颠倒给定的 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;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    复杂度分析

    • 时间复杂度: O ( l o g n ) O(logn) O(logn)
    • 空间复杂度: O ( 32 ) O(32) O(32)
  • 相关阅读:
    产品发布新闻稿件怎么写?稿件撰写技巧分享
    STM32 学习笔记1:STM32简介
    财长耶伦和她诺奖丈夫的千万身家
    不同类型的RFID标签及其应用场景浅析
    MySQL数据库
    python个人博客毕业设计开题报告
    中英文说明书丨CalBioreagents艾美捷重组丁型肝炎病毒蛋白
    二叉树刷题(完结篇)
    ActiveReportsJS 3.1中文版|||ActiveReportsJS 3.1英文版
    go的orm框架-Gorm
  • 原文地址:https://blog.csdn.net/lele_ne/article/details/126673385