🗒️面试中的惊慌:2的次幂问题与位运算的神奇
2024-1-17
| 2024-1-17
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password

不刷题还是不行啊

题目:
leetcode 231
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数  使得  ,则认为  是 2 的幂次方。
示例 1:
示例 2:
示例 3:
示例 4:
示例 5:

位运算:计算机的快速通道

首先,让我们搞清楚什么是位运算。位运算就像是计算机的快速通道,直接在数字的二进制表示上进行操作。想象一下,这就像是你在处理数字时,不用管它们的十进制形式,而是直接在它们的“原子级别”上工作。是不是听起来就很酷呢?

判断2的次幂:一个简单但巧妙的方法

回到我们的问题,怎样用位运算判断一个数是不是2的次幂?这里有一个巧妙的小技巧:
  • 在二进制表示中,2的次幂的数字只有一个1,其余都是0。比如2(10),4(100),8(1000)等。
  • 当你对这个数减1时,所有低位变成1,那个唯一的1变成0。比如4(100)变成3(011)。
  • 如果这个数是2的次幂,那么它和它减1的结果进行“按位与”运算,结果一定是0。因为没有一个相同的位同时为1。
听起来是不是像魔术一样?让我们用代码来揭秘这个魔术:
 

结语

祝编程愉快,面试顺利!👩‍💻👨‍💻🚀🌟
  • 算法
  • LeetCode
  • 逃离网络限制:使用Tailscale+自建DERP组建私有局域网的终极指南LangChain LCEL之长文本摘要
    Loading...
    目录