题目描述

题目分析

题目本身很简单,没觉得有什么技巧可以再进行优化了,觉得位运算是无法打乱相对顺序的,而这里需要进行镜像颠倒的操作。因此就踏实地写了一个循环。

在使用位运算得到每一位的时候,我吸取了经验,用一个临时变量保存,这样每次只用进行一次移位操作,这样是一个小小的优化。

class Solution {public:uint32_t reverseBits(uint32_t n) {uint32_t ans = 0;uint32_t t1 = 1 << 31;uint32_t t2 = 1 << 0;for (uint32_t i = 0; i < 32; ++i) {if (n & t1) {ans += t2;}t1 >>= 1;t2 <<= 1;}return ans;}
};

然后做完去看题解,发现题解用到说是叫位运算分治。其实就是简单的分治,只不过这里是一个很小的数字,可以用位运算进行分治操作。因为大小位32,所以分治的次数是5,我们可以顺序执行这5次分治,用位运算进行。

如果不是数字,并且位数更多的话,使用分治是没有意义的,复杂度也是O(n),甚至常数更大。

官方题解

这样好骚啊。。。

class Solution {private:const uint32_t M1 = 0x55555555; // 01010101010101010101010101010101const uint32_t M2 = 0x33333333; // 00110011001100110011001100110011const uint32_t M4 = 0x0f0f0f0f; // 00001111000011110000111100001111const uint32_t M8 = 0x00ff00ff; // 00000000111111110000000011111111public:uint32_t reverseBits(uint32_t n) {n = n >> 1 & M1 | (n & M1) << 1;n = n >> 2 & M2 | (n & M2) << 2;n = n >> 4 & M4 | (n & M4) << 4;n = n >> 8 & M8 | (n & M8) << 8;return n >> 16 | n << 16;}
};

每日一题:leetcode190.颠倒二进制位相关推荐

  1. Leetcode--190. 颠倒二进制位

    颠倒给定的 32 位无符号整数的二进制位. 示例 1: 输入: 00000010100101000001111010011100 输出: 0011100101111000001010010100000 ...

  2. leetcode190颠倒二进制位(JAVA版)

    颠倒给定的 32 位无符号整数的二进制位. 循环32次,每次取出最后一位,放在新的数里,旧的树不断循环右移,新的数不断循环左移 public class Solution {// you need t ...

  3. 易错丨Oracle 每日一题系列合集

    在墨天轮平台有个[数据库每日一题]栏目:www.modb.pro/test(复制到浏览器或者点击"阅读原文"可直达,每日一题),均是由数据库行业的专家亲自出题,墨天轮审核后发布的一 ...

  4. 【Leetcode】[190] 颠倒二进制位

    [Leetcode][190] 颠倒二进制位 Author: Xin Pan Date: 2022.3.13 题目 原题链接 颠倒给定的 32 位无符号整数的二进制位. 解法 考虑使用位运算来做,因为 ...

  5. 2022AcWing寒假算法每日一题之2058. 笨拙的手指

    2022AcWing寒假算法每日一题之2058. 笨拙的手指 题目链接:AcWing2058. 笨拙的手指 思路: 1.数据范围为0-1e9,则输入的时候按照字符串输入 2.将二进制和三进制各位数上的 ...

  6. Oracle 每日一题系列合集

    作者 | JiekeXu 来源 | JiekeXu之路(ID: JiekeXu_IT) 转载请联系授权 | (微信ID:xxq1426321293) 大家好,我是 JiekeXu,很高兴又和大家见面了 ...

  7. 对数函数定义域和值域_呆哥数学每日一题 —— 复合函数值域

    如果想要获取往期每日一题电子版,可以加我微信:daigemath366,备注:知乎 每日一题 呆哥解析:这是一个函数和复合函数的综合问题 首先我们先把原函数的值域求出来 先直接求导: 导数不容易判断单 ...

  8. 每日一题(进制转换)

    前言:为了让小伙伴更方便的学习编程语言,小白每天都会分享一道编程题.小白也创建了一个微信公众号,会同步更新题目和相关的视觉领域的知识,如果小伙伴不方便在网页上阅读文章,可以关注微信公众号"小 ...

  9. 每日一题(合并表格)

    前言:为了让小伙伴更方便的学习编程语言,小白每天都会分享一道编程题.小白也创建了一个微信公众号,会同步更新题目和相关的视觉领域的知识,如果小伙伴不方便在网页上阅读文章,可以关注微信公众号"小 ...

最新文章

  1. eclipse中导入web项目详细配置
  2. WIN7服务优化,别关太多,小心启动不
  3. ENode 2.8 最新架构图简介
  4. 大数据的数据采集数据处理_让我们处理大数据
  5. 学位论文是根,学术论文是叶
  6. 三公里社区争夺战—2021年社区团购研究报告
  7. MongoDB学习之在Linux下安装MongoDB
  8. [LeetCode]:116:Populating Next Right Pointers in Each Node
  9. 【MySQL】MySQL 查看数据库表列表的3种方式
  10. 三、索引优化(5)索引设计指南
  11. 全渠道数字化营销平台
  12. 机器视觉运动控制一体机应用例程|U盘视觉定位激光打标解决方案
  13. Python学习历程-1-20180630
  14. 用EasyHMI做的工程示例一览
  15. 电力电子技术——sepic和zeta电路分析
  16. 常见的名片尺寸如何在CorelDRAW预设
  17. vivado生成bit流错误:Combinatorial Loop Alert
  18. 简述计算机用二进制的原因,简述计算机采用二进制的原因
  19. UNIX 是什么?怎么诞生的?
  20. 10驾校科目一考试系统——窗口交互

热门文章

  1. 极光推送JPush的快速集成
  2. 玩转Win32开发(2):完整的开发流程
  3. 实验:sigsuspend(),sigprocmask()
  4. Jquery 寻找父、子、兄弟节点
  5. 神话人物的现代版简历
  6. 一个把图片保存到SQL数据库的工具
  7. java map是有序的吗_Java:如何初始化和填充最终的静态有序Map?
  8. java spark 读取json_apache-spark - 与aws-java-sdk链接时,在读取json文件时发生Spark崩溃 - 堆栈内存溢出...
  9. 安装提示卸载office_office2010 卸载工具
  10. linux日志文件备份,LINUX 自动备份程序日志(shell)