• 【位运算】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)
  • 相关阅读:
    【C++】STL:map/set,使用红黑树模拟实现
    【知识总结】金九银十offer拿到手软的前端面试题——HTML篇
    「学习笔记」FHQ-treap
    【C++】STL梳理
    冒泡排序c++
    npm i 报错或者卡顿 range manifest for 解决
    Python150题day01
    设计模式-代理模式
    代码随想录刷题| 01背包理论基础 LeetCode 416. 分割等和子集
    瑞利-贝纳尔对流(Rayleigh–Bénard convection)
  • 原文地址:https://blog.csdn.net/lele_ne/article/details/126673385