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

力扣231. 2 的幂(数学,二分查找,位运算)

Problem: 231. 2 的幂

文章目录

  • 题目描述
  • 思路即解法
  • 复杂度
  • Code

题目描述

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

思路即解法

思路1:位运算

1.易验证2的幂为正数;
2.易得2的幂用二进制表示只能有一个位为数字1
3.即将其转换为二进制统计其二进制1的个数

思路2:数学

当给定数n大于1时,每次当n模2等于0时(此时是2的幂)每次将n除以2最后判断n是否为1

思路3:二分查找

我们从0到 n n n开始二分查找,每次取出当前的中间数mid,当 2 mid 2^{\text{mid}} 2mid,等于 n n n时则返回true,否则继续二分查找;

复杂度

思路1:
时间复杂度:

O ( 1 ) O(1) O(1)

空间复杂度:

O ( 1 ) O(1) O(1)

思路2:
时间复杂度:

O ( 1 ) O(1) O(1);因为在int范围内2的最大的幂为 2 30 2^{\text{30}} 230

空间复杂度:

O ( 1 ) O(1) O(1)

思路:
时间复杂度:

O ( l o g n ) O(logn) O(logn)

空间复杂度:

O ( 1 ) O(1) O(1)

Code

思路1:

class Solution {
public:/*** Bit operation* @param n Given number* @return bool*/bool isPowerOfTwo(int n) {if (n < 0) {return false;}int mask = 1;int count = 0;for (int i = 0; i < 32; ++i) {if ((n & mask) != 0) {count++;}mask <<= 1;}if (count == 1) {return true;}return false;}
};

思路2:

class Solution {
public:/*** Math* @param n Given number* @return bool*/bool isPowerOfTwo(int n) {if (n < 0) {return false;}if (n > 1) {while (n % 2 == 0) {n /= 2;}}return n == 1 ? true : false;}
};

思路3:

class Solution {
public:/*** Binary Search* @param n Given number* @return bool*/bool isPowerOfTwo(int n) {if (n < 1) {return false;}int start = 0;int end = n;while (start <= end) {int mid = start + (end - start) / 2;double result = (double)(pow(2, mid));if (result == n) {return true;} else if (result > n) {end = mid - 1;} else {start = mid + 1;}}return false;}
};

相关文章:

力扣231. 2 的幂(数学,二分查找,位运算)

Problem: 231. 2 的幂 文章目录 题目描述思路即解法复杂度Code 题目描述 思路即解法 思路1&#xff1a;位运算 1.易验证2的幂为正数&#xff1b; 2.易得2的幂用二进制表示只能有一个位为数字1 3.即将其转换为二进制统计其二进制1的个数 思路2&#xff1a;数学 当给定数n大于1时…...

Maven私服部署与JAR文件本地安装

Nexus3 是一个仓库管理器&#xff0c;它极大地简化了本地内部仓库的维护和外部仓库的访问。 平常我们在获取 maven 仓库资源的时候&#xff0c;都是从 maven 的官方&#xff08;或者国内的镜像&#xff09;获取。团队的多人员同样的依赖都要从远程获取一遍&#xff0c;从网络方…...

【MySQL】字符串函数的学习

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-J7VN4RbrBi51ozap {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...

AI助力农作物自动采摘,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建作番茄采摘场景下番茄成熟度检测识别计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物&#xff0c;专家设计出来了很多用于采摘不同农作物的大型机械&#xff0c;看着非常震撼&#xff0c;但是我们国内农业的发展还是相对比较滞后的&#xff0…...

记录下ibus-libpinyin输入法的重新安装

目前的版本为&#xff1a; 首先把现在的ibus-libpinyin卸了 sudo apt-get --purge remove ibus-libpinyin sudo apt-get autoremove 安装教程请参考 Installation libpinyin/ibus-libpinyin Wiki GitHub yilai sudo apt install pkg-config sudo apt-get install lib…...

第三百一十八回

文章目录 1. 概念介绍2. 使用方法2.1 本地缓冲2.2 服务器缓冲3. 示例代码4. 内容总结我们在上一章回中介绍了"如何让输入键盘不遮挡屏幕"相关的内容,本章回中将介绍如何有效地缓冲网络图片.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的…...

破除Github API接口的访问次数限制

破除Github API接口的访问次数限制 1、Github介绍2、Github API接口2.1 介绍2.2 使用方法 3、Github API访问限制3.1 访问限制原因3.2 访问限制类别 4、Github API访问限制破除4.1 限制破除原理4.2 限制破除示例 1、Github介绍 Github&#xff0c;是一个面向开源及私有软件项目…...

蓝桥杯嵌入式第8届真题(完成) STM32G431

蓝桥杯嵌入式第8届真题(完成) STM32G431 题目 分析和代码 对比第六届和第七届&#xff0c;这届的题目在逻辑思维上确实要麻烦不少&#xff0c;可以从题目看出&#xff0c;这届题目对时间顺序的要求很严格&#xff0c;所以就可以使用状态机的思想来编程&#xff0c;拿到类似题…...

第二节 zookeeper基础应用与实战

目录 1. Zookeeper命令操作 1.1 Zookeeper 数据模型 1.2 Zookeeper服务端常用命令 1.3 Zookeeper客户端常用命令 1.3.1 基本CRUD 1.3.2 创建临时&顺序节点 2. Zookeeper JavaAPI操作 2.1 Curator介绍 2.2 引入Curator 2.3 建立连接 2.4 添加节点 2.5 修改节点 …...

改变AI服务器:探索界面互连芯片技术的创新突破

根据TrendForce的数据&#xff0c;AI服务器的出货量约为130,000台&#xff0c;占全球服务器总出货量的约1%。随着微软、Meta、百度和字节跳动等主要制造商相继推出基于生成式AI的产品和服务&#xff0c;订单量显著增加。预测显示&#xff0c;在ChatGPT等应用的持续需求推动下&a…...

【P1506 拯救oibh总部】

拯救oibh总部 题目背景 oibh 总部突然被水淹没了&#xff01;现在需要你的救援…… 题目描述 oibh 被突来的洪水淹没了&#xff0c;还好 oibh 总部有在某些重要的地方起一些围墙。用 * 号表示&#xff0c;而一个四面被围墙围住的区域洪水是进不去的。 oibh 总部内部也有许…...

应用层 HTTP协议(1)

回顾 前面我们说到了数据链路层,网络层IP协议,传输层的TCP/UDP协议一些知识点,现在让我们谈谈 应用层的HTTP协议的知识点. 这篇我们先从大局入手,仍然是对总体报文进行全局分析,再对细节报文进行拆解分析 版本 首先我们谈谈HTTP协议的版本 HTTP 0.9 (1991) HTTP 1.0 (1992 - 1…...

Linux学习笔记(centOS)—— 文件系统

目录 一、Linux中的文件 打开方式 二、目录结构​ 三、相关命令 切换目录命令 列出当前目录下的文件和目录命令 一、Linux中的文件 “万物皆文件。” 图1.1 所有文件 打开方式 图形化界面左上角的位置→计算机&#xff0c;打开以后就可以看到Linux全部的文件了&#xf…...

华视 CVR-100UC 身份证读取 html二次开发模板

python读卡&#xff1a;python读卡 最近小唐应要求要开发一个前端的身份证读卡界面&#xff0c;结果华视CVR-100UC 的读取界面是在是有点&#xff0c;而且怎么调试连官方最基本的启动程序都执行不了。CertReader.ocx 已成功&#xff0c;后面在问询一系列前辈之后&#xff0c;大…...

ubuntu彻底卸载cuda 重新安装cuda

sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" \"*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*" cuda10以上 cd /usr/local/cuda-xx.x/bin/ s…...

【Java】学习笔记:关于java.sql;

Connection conn null; Connection&#xff1a;这是一个 Java 接口&#xff0c;表示与数据库的连接。在这里&#xff0c;conn 是一个 Connection 类型的变量。 conn&#xff1a;这是变量的名称&#xff0c;可以根据需要进行更改。通常&#xff0c;conn 被用作表示数据库连接的…...

python web 框架Django学习笔记

2018年5月 python web 框架Django学习笔记 Django 架站的16堂课 MVC架构设计师大部分框架或大型程序项目中一种软件工程的架构模式&#xff0c;把程序或者项目分为三个主要组成部分&#xff0c;Model数据模型、View视图、Controller控制器。 命令及设置相关 创建数据库及中间…...

ubuntn20 搭建 redmine

安装数据库 更新包列表&#xff1a;sudo apt update 安装MySQL服务器&#xff1a;sudo apt install mysql-server 运行安全性脚本&#xff1a;MySQL服务器安装后&#xff0c;运行以下命令以加固安装&#xff1a;sudo mysql_secure_installation 这个脚本将引导您完成几个安全选…...

每日五道java面试题之java基础篇(三)

第一题. switch 是否能作⽤在 byte/long/String 上&#xff1f; Java5 以前 switch(expr)中&#xff0c;expr 只能是 byte、short、char、int。从 Java 5 开始&#xff0c;Java 中引⼊了枚举类型&#xff0c; expr 也可以是 enum 类型。从 Java 7 开始&#xff0c;expr 还可以…...

如何升级 gpt4?快速升级至ChatGPT Plus指南,爆火的“ChatGPT”到底是什么?

提到 ChatGPT。想必大家都有所耳闻。自从 2022 年上线以来&#xff0c;就受到国内外狂热的追捧和青睐&#xff0c;上线2个月&#xff0c;月活突破1个亿&#xff01;&#xff01;&#xff01; 而且还在持续上涨中。因为有很多人都在使用 ChatGPT 。无论是各大头条、抖音等 App、…...

从Kafka设计哲学到高性能系统通用模式:吞吐、顺序I/O与批处理的艺术

1. 项目概述&#xff1a;为什么是Kafka&#xff1f;如果你在后台开发、数据平台或者中间件领域摸爬滚打过几年&#xff0c;大概率会听过甚至深度使用过Apache Kafka。它早已不是一个简单的消息队列&#xff0c;而是现代数据驱动架构的“中枢神经系统”。我最初接触Kafka&#x…...

ncmdumpGUI:专业音频解密工具实现网易云音乐跨平台播放自由

ncmdumpGUI&#xff1a;专业音频解密工具实现网易云音乐跨平台播放自由 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 在数字音乐时代&#xff0c;平台间的格…...

保姆级教程:在Qt 6.5桌面应用中集成WebRTC实现一对一视频通话(附完整源码)

Qt 6.5与WebRTC深度整合实战&#xff1a;构建企业级视频通话解决方案 1. 环境配置与依赖管理 在开始Qt 6.5与WebRTC的集成之旅前&#xff0c;我们需要搭建一个稳定的开发环境。不同于普通的Qt项目&#xff0c;这种集成对工具链和系统配置有特殊要求。 推荐开发环境配置&…...

对比按量计费Taotoken的官方价折扣与活动价带来哪些实际节省

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比按量计费&#xff1a;Taotoken的官方价折扣与活动价带来哪些实际节省 1. 理解Taotoken的计费模式 Taotoken作为大模型API的聚…...

开发同城短途散步治愈路线生成程序,根据定位生成小众风景散步路线,适配日常解压。

基于创新思维与创业实验方法的「同城短途散步治愈路线生成程序&#xff0c;保持中立、去营销化、无引流。 一、实际应用场景描述 城市上班族常见状态&#xff1a; - 工作日长期处于高压、久坐状态 - 周末不想远行&#xff0c;但市内缺乏“新鲜感” - 热门公园人多、吵闹&…...

STM32体重秤电子秤称重超重报警Proteus仿真资源包

STM32体重秤电子秤称重超重报警Proteus仿真资源包 【下载地址】STM32体重秤电子秤称重超重报警Proteus仿真资源包 本资源包提供了基于STM32单片机的体重秤电子秤称重超重报警系统的完整解决方案。资源内容包括源代码、Proteus仿真文件以及全套相关资料&#xff0c;帮助用户快速…...

如何高效下载B站视频:BiliDownloader终极使用教程

如何高效下载B站视频&#xff1a;BiliDownloader终极使用教程 【免费下载链接】BiliDownloader BiliDownloader是一款界面精简&#xff0c;操作简单且高速下载的b站下载器 项目地址: https://gitcode.com/gh_mirrors/bi/BiliDownloader 想要轻松保存B站上的精彩视频内容…...

如何在Inkscape中快速实现免费高效的光学设计与光线追踪?

如何在Inkscape中快速实现免费高效的光学设计与光线追踪&#xff1f; 【免费下载链接】inkscape-raytracing An extension for Inkscape that makes it easier to draw optical diagrams. 项目地址: https://gitcode.com/gh_mirrors/in/inkscape-raytracing 你是否曾为…...

Sun-to-Spotify 技术架构深度剖析:AI 播客生成、CLI 交互与 Spotify 自动化发布全链路实现

摘要 Sun-to-Spotify 是一款基于 Claude Code Skill 生态构建的开源 AI 音频工程工具&#xff0c;核心实现自然语言指令→智能内容生成→多角色对话脚本创作→TTS 音频合成→混音处理→Spotify 平台自动发布的全流程自动化闭环。项目深度整合命令行工具&#xff08;sun-cli&am…...

终极Mac菜单栏整理神器:Ice让你的macOS界面瞬间清爽高效!

终极Mac菜单栏整理神器&#xff1a;Ice让你的macOS界面瞬间清爽高效&#xff01; 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 还在为Mac顶部菜单栏拥挤不堪而烦恼吗&#xff1f;每次找图标都要眯…...