当前位置:网站首页>leetcode-693.交替位二进制数
leetcode-693.交替位二进制数
2022-08-03 15:53:00 【KGundam】
位运算
题目详情
**给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。
**
示例1:
输入:n = 5
输出:true
解释:5 的二进制表示是:101
示例2:
输入:n = 7
输出:false
解释:7 的二进制表示是:111.
示例3:
输入:n = 11
输出:false
解释:11 的二进制表示是:1011.
第一种方法:正常取余逐位比较
按题目要求老老实实比较每一位和它的前一位
class Solution
{
public:
bool hasAlternatingBits(int n)
{
int pre = -1; //注意初始化
while (n != 0)
{
int cur = n % 2;
if (cur == pre)
return false;
pre = cur;
n /= 2;
}
return true;
}
};
第二种方法:位运算!
举个例子你就懂了,假如有个数字101010101
我们将它右移一位,得到了010101010 ------刚刚好错位了!
相信你已经懂了,再将两者进行异或运算,如果满足交替位二进制数,就会得到111…111全是1的数
然后再根据 n&n-1 == 0的充要条件是n的二进制位上全是1 来验证即可
我的代码:
class Solution
{
public:
bool hasAlternatingBits(int n)
{
long a = n ^ (n >> 1);//注意类型
return (a & (a + 1)) == 0;
}
};
位运算常用技巧
边栏推荐
- 产品以及研发团队有使用专业的办公软件,如禅道、蓝湖等,他们应该如何使用 Tita 系统?
- 深入浅出Flask PIN
- 请问大家,MySQL全量怎么样可以提高性能呢?我这里瓶颈是在Source上,在不增加并行度的情况下,
- 在 360 度绩效评估中应该问的 20 个问题
- 【QT】Qt项目demo:数据在ui界面上显示,鼠标双击可弹窗显示具体信息
- JD6606SP5_JD6606SSP_JD6606SASP_JD6621W7百盛新纪元授权代理商
- 上亿数据怎么玩深度分页?兼容MySQL + ES + MongoDB
- 请问下阿里云全托管flink能执行两条flink sql命令么?
- 美国国防部更“青睐”光量子系统研究路线
- 全新探险者以40万的产品击穿豪华SUV价格壁垒
猜你喜欢
随机推荐
攻防世界----bug
为教育插上数字化的翅膀,网易云信发布「互联网+教育」整体解决方案
ruoyi若依框架@DataScope注解使用以及碰到的一些问题
基于DMS的数仓智能运维服务,知多少?
如何选择合适的损失函数,请看......
全新探险者以40万的产品击穿豪华SUV价格壁垒
How to start an NFT collection
请问下,flink cdc监控oracle,我看源码是通过sid方式的,请问怎么改成service
瞌睡检测系统介绍
深入浅出Flask PIN
ReentrantReadWriteLock详解
参与便有奖,《新程序员》杂志福利来袭!
JS basics--judgment
AI+BI+可视化,Sugar BI架构深度剖析
证实了,百度没有快照了
leetcode:899. 有序队列【思维题】
A new round of competition for speech recognition has started. Will natural dialogue be the next commanding height?
语音识别新一轮竞争打响,自然对话会是下一个制高点吗?
How to play deep paging with hundreds of millions of data?Compatible with MySQL + ES + MongoDB
posgresql 到 es 报这个错误 ,啥意思