【LeetCode】693. 交替位二进制数

news2024/7/4 4:52:50

693. 交替位二进制数(简单)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方法一

思路

  • 如果一个数的二进制表示总是 0、1 交替出现,那么这个数字可能有两种表示情况,...101010...010101 ,即对应最低位从 0 或 1 开始的两种情况。

  • 因此,我们先确定该二进制的最低位:begin = n & 1 ,接下来遍历 n 的每一位,并且与应出现的最低位进行比较。

    比方说,一开始begin 是 1 ,那么接下来应该要出现 0,所以我们将 begin 更新为 0,然后将它和 n 的最低位比较,如果相同说明可以判断下一位,如果不同,则说明这个数字不是交替位二进制数,直接返回 false。

代码

class Solution {
public:
    bool hasAlternatingBits(int n) {
        int begin = n & 1; 
        while(n){
            if((n & 1) == begin){
                begin = (begin + 1) % 2;
                n >>= 1;
            }
            else{
                return false;
            }
        }
        return true;
    }
};

方法二

思路

  • 对输入 n 的二进制表示右移一位后,得到的数字再与 n 按位异或得到 tmp 。当且仅当输入n为交替位二进制数时,tmp 的二进制表示全为1 (不包括前导0)

  • 将 tmp 与 tmp +1 按位与,当且仅当 tmp 的二进制表示全为1 时,结果为0。这里进行简单证明:当且仅当 tmp 的二进制表示全为 1 时,tmp +1 可以进位,并将原最高位置为 0,按位与的结果为0。否则,不会产生进位,两个最高位都为1,相与结果不为0

  • 结合上述两步,可以判断输入是否为交替位二进制数。

代码

class Solution {
public:
    bool hasAlternatingBits(int n) {
        long tmp = n ^ (n >> 1);
        return (tmp & (tmp+1)) == 0;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

港科夜闻|香港科大出席一流大学建设系列研讨会-2022暨中国大学校长联谊会...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大出席一流大学建设系列研讨会—2022暨中国大学校长联谊会。5月25日至26日,香港科技大学副校长汪扬教授出席由中国科学技术大学主办的一流大学建设系列研讨会—2022暨中国大学校长联谊会。参会代表来自…

【SpringCloud】SpringAMQP总结

文章目录 1、AMQP2、基本消息模型队列3、WorkQueue模型4、发布订阅模型5、发布订阅-Fanout Exchange6、发布订阅-DirectExchange7、发布订阅-TopicExchange8、消息转换器 1、AMQP Advanced Message Queuing Protocol,高级消息队列协议。是用于在应用程序之间传递业务…

深入理解设计原则之单一职责原则(SRP)

系列文章目录 C高性能优化编程系列 深入理解设计原则系列 深入理解设计模式系列 高级C并发线程编程 SRP:单一职责原则 系列文章目录1、单一职责原则的定义和解读2、单一职责原则案例解读2.1、违背单一职责原则反面案例2.2、违背单一职责原则反面案例 - 解决方案 3…

《嵌入式存储器架构、电路与应用》----学习记录(三)

第4章 嵌入式内存 4.1 Flash的发展背景 Flash是非易失存储器,具有存储密度高、容错能力强和读写速度相对较慢等特点,传统Flash广泛应用于外部大数据存储。为了满足微控制器芯片(MCU)高速运算的需求,嵌入式Flash(eFlash)往往作为MCU的内部数…

【花雕学AI】ChatGPT的四大语言处理神器:文本生成、问答、创意生成和内容优化的技巧和实例

引言:ChatGPT是一个人工智能聊天机器人,它可以理解和交流多种语言,例如中文、英文、日文、西班牙语、法语、德语等。它是由OpenAI开发的,基于GPT-3.5和GPT-4这两个大型语言模型。它不仅可以与用户进行对话,还可以根据用…

Centos7切换到Alibaba Cloud Linux3

通过控制台自动导入迁移源目前仅支持迁移源的类型为物理机/虚拟机/云服务器和阿里云ECS云服务器,若需要迁移其他类型的迁移源,则可以选择手动导入迁移源。 第一步,登录SMC客户端。 登录网址:阿里云登录 - 欢迎登录阿里云&#x…

MYSQL 8 Too many connections error 还在继续,这对DBA 是不公平的

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

c++11 标准模板(STL)(std::bitset)(二)

定义于头文件 <bitset> template< std::size_t N > class bitset; 类模板 bitset 表示一个 N 位的固定大小序列。可以用标准逻辑运算符操作位集&#xff0c;并将它与字符串和整数相互转换。 bitset 满足可复制构造 (CopyConstructible) 及可复制赋值 (CopyAssig…

qgis二次开发环境搭建(qgis-3.28.6+ubuntu22.04+qt5.15)

背景 一个Ros2项目中用到了qgis&#xff0c;特此整理一下用到的qgis二次开发代码。 linux搭建Debug环境(省事简单apt一把梭) 下载 ubuntu22.04qgis-3.28.6Qt version 5.15.3 编译 参考qgis编译文档 ubuntu22.04 使用上图jammy的安装命令上图中的apt-get安装命令安装的…

PyQt5桌面应用开发(19):事件过滤器

本文目录 PyQt5桌面应用系列再来点事件事件过滤器例子这是什么恶毒巫术?需求分析代码额外的细节知 总结 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQt5桌面应用开发&#xff08;2&#xff09;&#xff1a;事件循环 PyQt5桌面应用开…

从零到无搭建Vue项目及代码风格规范

注&#xff1a;已经有vue项目的可以跳过项目初始化 Vue项目搭建 环境搭建 安装nvm 方便后续切换不通的node版本 nvm官网 傻瓜安装就行 或者搜下自己&#xff08;非本文重点&#xff09;nvm 安装好后 安装一个Node版本 本文使用的 有了环境开始创建Vue项目 打开命令行 cmd n…

Redis底层学习(五)—存储类型-Set篇

文章目录 特点具体服务器操作命令底层结构应用场景 特点 适⽤场景&#xff1a;存储有去重需求的数据&#xff0c;⽐如&#xff1a;针对⼀篇⽂章⽤户进⾏点赞操作。 它的特点是内部元素⽆序且不重复。它的内部实现相当于⼀个特殊的字典&#xff0c;字典中所有的 value 的值都为…

这么好看的头像,岂不拿下!

❝ 如此好看的头像&#xff0c;怎么能不喜欢&#xff1f;&#xff1f;&#xff1f; ❞ 代码放在了最后 后续还会出一个工具&#xff0c;以便于随时打开下载。 看上述的头像是不是还是很不错的。看着网站还是✨✨每天都会有更新的✨✨。 所以&#xff0c;我动手了&#xff0c;下…

5.2 案例引入

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 1.什么是大数据时代的到来&#xff1f; 大数据时代指的是在现代社会中&#xff0c;产生和积累的数据规模庞大、速度快、种类多样的时代。随着计算机技术…

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.4密码应用安全性评估测评过程指南

目录 概述 1.基本原则 2.风险测评控制 3.测评过程 密码应用评估方案 1.主要内容 1&#xff09;密码应用解决方案评估要点 2&#xff09;实施方案评估要点 3&#xff09;应急处置方案评估要点 2.主要任务 3.密码应用方案评估的输出文档 测评准备活动 1.测评准…

不愧是阿里,扣的真细。

铜三铁四已经过去了&#xff0c;今天的行情虽然没有以前好&#xff0c;但是相比去年来说也算是好了一些了。有一些人已经在这个招聘季拿到了不错的Offer了。 今天给大家分享一份面经&#xff0c;今天这位朋友的背景是Java五年本&#xff0c;2023年前被毕业后投入了面试大军怀抱…

Baseline Profile 安装时优化在西瓜视频的实践

‍ 动手点关注 干货不迷路 背景 在Android上&#xff0c;Java/Kotlin代码会编译为DEX字节码&#xff0c;在运行期由虚拟机解释执行。但是&#xff0c;字节码解释执行的速度比较慢。所以&#xff0c;通常虚拟机会在解释模式基础上做一些必要的优化。 在Android 5&#xff0c;Goo…

chatgpt赋能python:Python列表:完整介绍与使用指南

Python列表&#xff1a;完整介绍与使用指南 Python是一种非常受欢迎的编程语言&#xff0c;而Python列表是Python编程中最基本的数据结构之一。列表在Python中的使用频率极高&#xff0c;因为列表可以存储许多不同类型的数据&#xff0c;并且可以很方便地进行操作和修改。在本…

Unity Addressables学习笔记(2)---创建远程服务器对象

1.先创建对象 我的做法是&#xff1a; 先拖动一张图片到Resources/img下就是我选中的这张文件夹 2.把图片拖动到Hierarchy里变成一个对象&#xff0c;再把对象拖动到Resources/prefabs里&#xff0c;图片里的单词敲错了哈哈哈哈。 这样这个图片就变成了预制体&#xff0c;然…

AMD在数据中心领域举步维艰,竞争越来越难

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 数据中心业务举步维艰 2023年第一季度&#xff0c;AMD的数据中心业务收入为13亿美元&#xff0c;几乎没有同比增长&#xff0c;反而环比下降了22%。与此同时&#xff0c;它的主要竞争对手英伟达(NVDA)却获得了越来越多的订…