当前位置: 首页 > news >正文

经典算法实例应用:交替位二进制数(二)

接上文,与大家分享另一种解题思路:

方法二:位运算

思路

对输入 n 的二进制表示右移一位后,得到的数字再与 n 按位异或得到 a。当且仅当输入 n 为交替位二进制数时,a 的二进制表示全为 1(不包括前导 0)。这里进行简单证明:当 a 的某一位为 1 时,当且仅当 n 的对应位和其前一位相异。当 a 的每一位为 1 时,当且仅当 n 的所有相邻位相异,即 n 为交替位二进制数。

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

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

代码

Python3

class Solution: def hasAlternatingBits(self, n: int) -> bool: a = n ^ (n >> 1) return a & (a + 1) == 0

Java

class Solution { public boolean hasAlternatingBits(int n) { int a = n ^ (n >> 1); return (a & (a + 1)) == 0; } }

C#

public class Solution { public bool HasAlternatingBits(int n) { int a = n ^ (n >> 1); return (a & (a + 1)) == 0; } }

C++

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

C

bool hasAlternatingBits(int n) { long a = n ^ (n >> 1); return (a & (a + 1)) == 0; }

Golang

func hasAlternatingBits(n int) bool { a := n ^ n>>1 return a&(a+1) == 0 }

JavaScript

var hasAlternatingBits = function(n) { const a = n ^ (n >> 1); return (a & (a + 1)) === 0; };

复杂度分析

  • 时间复杂度:O(1) 。仅使用了常数时间来计算。
  • 空间复杂度:O(1) 。使用了常数空间来存储中间变量。
http://www.jsqmd.com/news/1207939/

相关文章:

  • 张家口黄金奢品回收六家实力门店六区十县均可上门 - 新芸鼎珠宝首饰
  • 图解《能源行业数据分类分级指南》2026年版解读课件234页PDF
  • 小程序毕设选题推荐:基于 SpringBoot 的传统戏曲文化传播小程序的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • N32G430开发板GPIO与PWM实战:从点灯到舵机控制
  • InverseMatrixVT3D:用投影矩阵实现轻量级3D占用预测
  • wdb:突破传统调试边界的Python全栈Web调试器革命
  • 2026泰安消防安全评估怎么选?消防年检评估检测靠谱机构 TOP 上门排查 + 电气防火+报告可查 电话汇总 - 中安检测集团
  • 古迪植物大战僵尸积木60043机关套装测评与拼搭指南
  • 告别格式返修、熬夜调排版!4000+高校模板一键合规排版|okbiye论文格式实测教程
  • 完整指南:本地高效部署Gemma-4-31B-JANG_4M-CRACK-GGUF大语言模型
  • word使用笔记
  • Arachni框架:Web安全扫描与漏洞检测的终极指南
  • 辨证调理 温和养护:中医视角下的糖尿病健康管理思路
  • AI Agent开发跨平台实战:打破Mac依赖迷思
  • 多维度控制炎症阿普斯特Apremilast同时改善皮肤与关节症状【海得康】
  • 美兰区海口逸程香奈儿回收门店,双鉴无隐形消费,闲置箱包极速回款 - 全城热点
  • 本体语义:AI 时代企业知识治理的“通用语言“在哪里?
  • WSL2虚拟硬盘迁移:解决C盘空间不足的终极方案
  • Windows 11首次启动强制联网登录的解决方案
  • 卓旭科技独立售卖或组合打包 - 企业数据分析
  • LE Audio PTS dongle破解和调试方法
  • 东川区高端名表回收怎么选?30 年连锁易奢福无损鉴表当场结算 - 奢侈品回收实体店
  • 从前端到AI大模型:收藏这份Agent开发避坑指南,小白也能轻松入门!
  • 从 Demo 到服务:小白程序员必收藏,轻松掌握 Agent 服务开发全景图
  • 瑞萨RA4开发板入门:流水灯与触摸按键实战
  • Cursor支付功能集成:为什么87%的团队在sandbox阶段就埋下线上资损隐患?(附自动巡检脚本开源)
  • AI工具真实性评估:技术验证框架与安全实践指南
  • 基于图像识别的鸣潮自动化工具:从技术原理到实战应用完整指南
  • 计算机毕业设计之基于springboot的养老电商平台的设计与实现
  • 大模型时代的企业成本运维:如何实现 API 调用成本优化