首页 > 其他分享 >LeetCode刷题(46)~颠倒二进制位【循环/分治】

LeetCode刷题(46)~颠倒二进制位【循环/分治】

时间:2023-01-12 14:39:54浏览次数:45  
标签:二进制 示例 二进制位 uint32 46 00111001011110000010100101000000 LeetCode 输入

题目描述

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

示例 1:

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

示例 2:

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

解答 By 海轰

提交代码(循环移位)

  uint32_t reverseBits(uint32_t n) {
        uint32_t  result=0;
        for(int i=0;i<32;++i)
        {
            result=result*2+n%2;
            n/=2;
        }
        return result;
    }

运行结果
LeetCode刷题(46)~颠倒二进制位【循环/分治】_其他

解答

分治

 uint32_t reverseBits(uint32_t n) {
        n = (n >> 16) | (n << 16); 
        n = ((n & 0xff00ff00) >> 8) | ((n & 0x00ff00ff) << 8); 
        n = ((n & 0xf0f0f0f0) >> 4) | ((n & 0x0f0f0f0f) << 4); 
        n = ((n & 0xcccccccc) >> 2) | ((n & 0x33333333) << 2); 
        n = ((n & 0xaaaaaaaa) >> 1) | ((n & 0x55555555) << 1); 
        return n;
    }

运行结果
LeetCode刷题(46)~颠倒二进制位【循环/分治】_进制_02

题目来源

链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnc5vg/
来源:力扣(LeetCode)

标签:二进制,示例,二进制位,uint32,46,00111001011110000010100101000000,LeetCode,输入
From: https://blog.51cto.com/u_15939722/6004148

相关文章

  • LeetCode刷题(45)~位1的个数【布赖恩·克尼根算法】
    题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为‘1’的个数(也被称为汉明重量)。示例1:输入:00000000000000000000000000001011输出:3解释:......
  • LeetCode刷题(38)~各位相加
    题目描述给定一个非负整数num,反复将各个位上的数字相加,直到结果为一位数。示例:输入:38输出:2解释:各位相加的过程为:3+8=11,1+1=2。由于2是一位数,......
  • LeetCode刷题(40)~第一个错误的版本【二分法:mid=l+(r-l)/2 避免mid=(l+r)/2溢出】
    题目描述你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所......
  • LeetCode刷题(72)~按既定顺序创建目标数组【!】
    题目描述给你两个整数数组nums和index。你需要按照以下规则创建目标数组:目标数组target最初为空。按从左到右的顺序依次读取nums[i]和index[i],在target数组中的......
  • LeetCode刷题(73)~Nim 游戏
    题目描述你和你的朋友,两个人一起玩Nim游戏:桌子上有一堆石头,每次你们轮流拿掉1-3块石头。拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优......
  • LeetCode刷题(76)~三步问题
    题目描述三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示......
  • LeetCode刷题(75)~按摩师
    题目描述一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师......
  • LeetCode刷题(77)~三角形的最大周长
    题目描述给定由一些正数(代表长度)组成的数组A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回0。示例1:输入:[2,1,2]输......
  • LeetCode刷题(78)~找到所有数组中消失的数字【原值作索引】
    题目描述给定一个范围在1≤a[i]≤n(n=数组大小)的整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在[1,n]范围之间没有出现在数组中的数字。......
  • LeetCode刷题(79)~分糖果【哈希】
    题目描述给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的......