java数据结构与算法刷题-----LeetCode693. 交替位二进制数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

文章目录

    • 位运算

在这里插入图片描述

位运算

解题思路:时间复杂度O( 1 1 1),空间复杂度O( 1 1 1)
  1. 题目所给n都是正整数
  2. 题目让我们判断是否是01交替串。学过计算机组成原理的一定很熟悉,因为这几乎是必考题
  3. 01交替串有如下规律:
  1. 如果0和1交替出现,将n右移一位变为n2.则n2和n中所有二进制位(除了数值位中最高位)都会正好相反。因为右移操作最高位会补0.不能保证n的最高位是1.
  2. a=n^n2的结果正好是除了符号位和数值位最高位以外,其余位全为1的串
  3. 此时a+1的结果正好为除了数值位最高位为1,其余全是0的串
  4. 此时用a & (a+1)的结果必然为0.
  1. 只要符合上诉规律,则n必然是01交替串。案例如下:
  1. n = …0…010 1010 1010 1010 1010 1010 1010 1010 其中…0…是符号位,不需要改变,所以我们使用>>运算符,表示有符合位移
  2. n2=n>>1 =…0…001 0101 0101 0101 0101 0101 0101 0101
  3. a=n ^ n2=…0…011 1111 1111 1111 1111 1111 1111 1111 我们发现异或结果除了符号位和最高数值位,全部变成了1
  4. a+1 =…0…100 0000 0000 0000 0000 0000 0000 0000 +1后,正好数值位的最高位为1,其余全为0
  5. a &(a+1)=…0…000 0000 0000 0000 0000 0000 0000 0000 此时相与正好全部归0
  1. 我们一般称这样的东西为定理,就是实实在在地规律的总结。这样的东西没有办法,就是实实在在存在于那里的事实,记住这样的规律就行了。
代码

在这里插入图片描述

class Solution {public boolean hasAlternatingBits(int n) {int a = n ^ (n >> 1);//如果0和1交替出现,则将n右移一位变为n2.则n2和n中所以二进制位都会正好相反//如果是交替01串,a & (a+1) 必然为0.这就是交替01的规律,只要符合这个规律就可以返回truereturn (a & (a + 1)) == 0;//n =      ..0..010 1010 1010 1010 1010 1010 1010 1010 其中..0..是符号位,不需要改变,所以我们使用>>运算符,表示有符合位移//n2=n>>1 =..0..001 0101 0101 0101 0101 0101 0101 0101 //a=n ^ n2=..0..011 1111 1111 1111 1111 1111 1111 1111 我们发现异或结果除了符号位和最高数值位,全部变成了1//a+1     =..0..100 0000 0000 0000 0000 0000 0000 0000 +1后,正好数值位的最高位为1,其余全为0//a &(a+1)=..0..000 0000 0000 0000 0000 0000 0000 0000 //此时相与正好全部归0}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Open CASCADE学习|实现Extrude功能

首先定义了一些基本的几何元素,如线、圆和平面,然后使用makeExtrudebydir函数来对一个面进行挤出操作。下面是详细过程: 定义Extrude函数:makeExtrudebydir函数接受一个TopoDS_Shape对象和一个gp_Vec对象作为参数。TopoDS_Shape是…

遥感卫星:探索地球的科技之旅

遥感卫星是人类探索地球、理解地球、保护地球的重要工具,其发展历程承载了人类对地球的探索与认知的历程。从最初的概念到如今的高科技应用,遥感卫星技术的发展见证了人类科技的不断进步与创新。 初心萌芽: 遥感卫星的发展始于20世纪中叶&…

Golang | Leetcode Golang题解之第26题删除有序数组中的重复项

题目&#xff1a; 题解&#xff1a; func removeDuplicates(nums []int) int {n : len(nums)if n 0 {return 0}slow : 1for fast : 1; fast < n; fast {if nums[fast] ! nums[fast-1] {nums[slow] nums[fast]slow}}return slow }

window10轻松使用k8s

Docker Desktop安装篇 1、win10安装 1、下载安装包 https://www.docker.com/products/docker-desktop/ 官网下载安装包 2、配置win10支持虚拟化 不勾选Hyper-V&#xff0c;容易出错 3、安装WSL配置window支持linux Windows Subsystem for Linux (WSL) 安装 Linux 子系统&am…

一辆汽车的节拍时间是怎样的?

节拍时间&#xff0c;又称 takt time&#xff0c;是德语中“节奏”的意思。在汽车制造业中&#xff0c;它指的是按照客户需求和生产计划&#xff0c;生产一辆汽车所需的时间。这个时间是固定的&#xff0c;它决定了生产线上每个工序的操作速度和节奏&#xff0c;是生产线上所有…

Fuel tank position

Fuel tank position 汽车油箱位置在哪里&#xff0c;加油的时候就不会听错方向

IEDA 启动项目时出现 java: java.lang.OutOfMemoryError: GC overhead limit exceeded 异常

问题 通过Idea启动项目时&#xff0c;出现java: java.lang.OutOfMemoryError: GC overhead limit exceeded 内存溢出问题&#xff1b; 解决方案 错误是发生在编译阶段&#xff0c;而不是运行阶段&#xff1a; 【1】idea编译Java项目使用的虚拟机和idea软件自身使用的虚拟机是…

支付系统核心逻辑 — — 状态机(JavaGolang版本)

支付系统核心逻辑 — — 状态机 代码地址&#xff1a;https://github.com/ziyifast/ziyifast-code_instruction/tree/main/state_machine_demo 1 概念&#xff1a;FSM&#xff08;有限状态机&#xff09;&#xff0c;模式之间转换 状态机&#xff0c;也叫有限状态机&#xff08…

Vue.js npm错误:transpileDependencies.map不是一个函数

这个错误通常是由于npm版本不兼容导致的。在旧版本的npm中&#xff0c;transpileDependencies是一个字符串数组&#xff0c;我们可以直接配置需要编译的依赖库。而在较新版本的npm中&#xff0c;transpileDependencies被改成了一个对象&#xff0c;并且需要使用map()方法来处理…

npm命令卡在reify:eslint: timing reifyNode:node_modules/webpack Completed in 475ms不动

1.现象 执行npm install命令时&#xff0c;没有报错&#xff0c;卡在reify:eslint: timing reifyNode:node_modules/webpack Completed in 475ms不动 2.解决办法 &#xff08;1&#xff09;更换淘宝镜像源 原淘宝 npm 域名http://npm.taobao.org 和 http://registry.npm.ta…

Mistral AI突围:开源大模型Mixtral 8x22B颠覆行业格局

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

人工智能——大语言模型

5. 大语言模型 5.1. 语言模型历史 20世纪90年代以前的语言模型都是基于语法分析这种方法&#xff0c;效果一直不佳。到了20世纪90年代&#xff0c;采用统计学方法分析语言&#xff0c;取得了重大进展。但是在庞大而复杂的语言信息上&#xff0c;基于传统统计的因为计算量巨大…