当前位置:网站首页>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;
}
};
位运算常用技巧

边栏推荐
猜你喜欢

新一代网状网协议T-Mesh无线通信技术优势介绍

How to play deep paging with hundreds of millions of data?Compatible with MySQL + ES + MongoDB

Neural networks, cool?

JS basics--judgment

红蓝对抗经验分享:CS免杀姿势

基于DMS的数仓智能运维服务,知多少?

Essentially a database data recovery 】 【 database cannot read data recovery case

美国国防部更“青睐”光量子系统研究路线

MySQL中的基数是啥?

Small Tools(4) 整合Seata1.5.2分布式事务
随机推荐
Deep Learning - Install CUDA and CUDNN to implement GPU operation of tensorflow
JS handwritten call apply bind (detailed) (interview)
MySQL性能优化_小表驱动大表
兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00
不安装运行时运行.NET程序
DC-DC 2C(40W/30W) JD6606SX2退功率应用
使用VS Code搭建ESP-IDF环境
【899. Ordered Queue】
托尔斯泰:生活中只有两种不幸
【Unity入门计划】制作RubyAdventure01-玩家的创建&移动
AI+BI+可视化,Sugar BI架构深度剖析
13、OOM模拟
AWS中国区SDN Connector
并发编程的核心问题
一个文件管理系统的软硬件配置清单
语音识别新一轮竞争打响,自然对话会是下一个制高点吗?
深度学习GPU最全对比,到底谁才是性价比之王?
Basic knowledge points in js - events
CopyOnWriteArrayList详解
5v充8.4v1A电流充电管理ic