【LeetCode】342. 4的幂

news2024/12/26 20:45:15

342. 4的幂(简单)

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

方法一:二进制

思路

  • 首先考虑一个数字是不是 2 的整数次方:如果一个数字 n 是 2 的整数次方,那么它的二进制一定是 0...010...0 这样的形式,将它和 -n 按位与的结果一定是它本身。如果 n & (-n) == n ,说明这个数字是 2 的次方。
  • 如果这个数字还是 4 的次方,那么 1 的位置一定是偶数(左边第一位数字的下标为 0),因此我们可以判断最高位的 1 的位置是不是偶数,如果是的话,说明这个数字是 4 的次方。

代码

class Solution {
public:
    bool isPowerOfFour(int n) {
        if(n <= 0 || (n & (-n)) != n) return false;
        int pos = 0;
        while(n){
            if((n & 1) && pos % 2 == 0)  return true;
            n >>= 1;
            pos ++;
        }
        return false;
    }
};

方法二:二进制优化

思路

  • 方法二和方法一思路差不多,但是方法一在判断最高位 1 的时候用到了循环,我们可以将其简化。
  • 在确定了一个数是 2 的次方之后,如果它仍然是 4 的次方,那么 1 的位置一定是偶数(左边第一位数字的下标为 0)。由于题目保证了给定数字 n 一定是 32位的有符号整数,因此我们可以构造一个数 mask,它的所有偶数位都是 0 ,奇数位都是 1,即 1010...1010,也就是 0xaaaaaaaa,如果将 mask 和 n 按位与,得到 0,说明这个数是 4 的次方

代码

class Solution {
public:
    bool isPowerOfFour(int n) {
        return n > 0 && (n & (-n)) == n && (n & 0xaaaaaaaa) == 0;
    }
};

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

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

相关文章

前沿质谱应用沙龙分享会暨苏州百趣落成仪式即将开幕!

质谱作为一项医学检验新技术&#xff0c;凭借高特异性、高灵敏度、多指标检测等优势&#xff0c;成为了体外诊断领域最富生命力的新技术之一。目前质谱技术能够准确的测定多种生物小分子代谢物&#xff0c;且质谱在大分子物质例如蛋白质方面也应用的非常广泛。目前&#xff0c;…

要电脑重装系统装在哪个盘最好

在进行电脑重装系统时&#xff0c;选择一个合适的系统安装盘是非常重要的。本文将为您介绍如何选择最佳的系统安装盘&#xff0c;以确保系统性能和稳定性的最佳表现。 工具/原料&#xff1a; 系统版本&#xff1a;windows系统 品牌型号&#xff1a;华硕VivoBook14 软件版本…

张小龙发明了小程序,是否意味着失败?

今天微信小程序上线&#xff0c;从开发到上线仅仅用了四天时间&#xff0c;这是一个了不起的成就。 小程序诞生以来&#xff0c;一直存在着一种声音&#xff1a;它是张小龙“伟大的发明”&#xff0c;是微信“伟大的创新”。然而&#xff0c;张小龙在小程序发布会上宣布&#…

Spark SQL概述、数据帧与数据集

文章目录 一、准备工作1、准备数据文件2、启动Spark Shell 二、加载数据为Dataset1、读文件得数据集 三、给数据集添加元数据信息1、定义学生样例类2、导入隐式转换3、将数据集转换成学生数据集4、对学生数据集进行操作&#xff08;1&#xff09;显示数据集内容&#xff08;2&a…

认识熟悉 Stable Diffusion(SD)基本参数

界面样式 界面参数 界面参数说明prompt希望生成的图片的描述negative prompt不希望在图片中出现的描述Batch size每次生成的图片个数Width图片宽度Height图片高度 这里需要注意的就是尺寸&#xff0c;尺寸并非越大越好&#xff0c;需要根据自己的配置和需求适当调整&#xff…

node.js+vue学生读书笔记共享分享系统

从上面的描述中可以基本可以实现软件的功能: 1、开发实现读书笔记共享平台的整个系统程序; 2、管理员;首页、个人中心、用户管理、笔记分享管理、个人笔记管理、管理员管理、交流互动、系统管理等。 3、用户:首页、个人中心、笔记分享管理、个人笔记管理、我的收藏管理。 4、前…

Window10配置Maven详细教程

文章目录 一、Maven概述二、Maven下载三、配置Maven环境变量四、查看Maven是否配置成功五、为Maven配置本地仓库以及指定远程仓库5.1 Maven构件搜索顺序5.2 Maven配置本地仓库5.3 Maven指定远程仓库 一、Maven概述 Maven是专门管理和构建Java项目的工具&#xff0c;Maven的主要…

Linux nohup-后台挂起运行程序神器

一. 场景描述 天黑了&#xff0c;我得离开实验室去吃饭了。为了环保&#xff0c;我必须关闭电脑&#xff0c;减少不必要的浪费&#xff01;正常情况下当我关闭终端或电脑时&#xff0c;上面运行的任务代码即会自动停止&#xff0c;但我依旧希望保持代码的正常运行&#xff0c;此…

Android 更新后跑不起来?快来适配 AGP8 和 Flamingo/JDK 17

随着 Android Studio Flamingo 正式版的发布&#xff0c;AGP 8&#xff08;Android Gradle Plugin 8&#xff09;也正式进入大家的视野&#xff0c;这次 AGP 8 相关更新属于「断代式」更新&#xff0c;同时如果想体验 AGP 8&#xff0c;就需要升级到 Android Studio Flamingo 版…

揭秘速卖通卖家成功的绝佳秘籍,助您打造畅销店铺!

在竞争激烈的速卖通市场中&#xff0c;如何让您的店铺脱颖而出并实现畅销&#xff1f;林哥今天就跟大家讲一讲一些成功速卖通卖家的绝佳秘籍&#xff0c;帮助您引导高流量和高转化率&#xff0c;成就一个畅销的店铺。 ​一、精确定位目标受众 成功的速卖通店铺离不开精确的目标…

自动生成作文的软件有哪些?盘点五种自动生成作文软件

写作是一项需要花费大量时间和精力的任务&#xff0c;而自动生成作文的软件可以帮助我们节省大量的时间。这些软件通过分析和归纳大量的素材和语言模型&#xff0c;能够快速生成高质量的文章。相比于传统的写作方式&#xff0c;使用自动生成作文软件可以更快地完成文章&#xf…

一套完整的客户管理系统应该包含哪些模块呢?

一套完整的客户管理系统应该包含哪些模块呢&#xff1f; 想要弄清楚一个完整的客户管理系统应该具备哪些功能&#xff0c;首先得清楚系统使用者、使用场景以及主要功能这三个因素。 以我们公司为例&#xff1a; 主要使用者&#xff1a;运营人员、市场人员、产品人员。主要目…

Android Settings中Preference的理解以及使用

Preference 是Android App 中重要的控件之一&#xff0c;Settings 模块大部分都是通过 Preference 实现 优点&#xff1a; Preference 可以自动显示我们上次设置的数据&#xff0c;Android提供preference这个键值对的方式来处理这种情况&#xff0c;自动保存这些数据&#xff…

链接生成二维码怎么弄?这些制作方法分享给大家

在现代社会中&#xff0c;链接生成二维码已经成为了一个非常实用的工具。通过将链接转换为二维码&#xff0c;我们可以将它们轻松地分享给朋友、家人或同事&#xff0c;而无需手动输入URL或复制粘贴。这使得信息的传播变得更加快捷和高效。例如&#xff0c;你正在计划一个聚会&…

Spring第三方bean管理

文章目录 1.第三方bean管理1.1 Bean1.2 小结 2.第三方bean依赖注入2.1 简单类型&#xff1a;成员变量2.2 引用类型&#xff1a;方法形参2.3 小结 3.总结 1.第三方bean管理 1.1 Bean 首先看一下目录结构&#xff0c;APP里面就初始化了SpringConfig文件 SpringConifg中就一句话…

【vue】8个非常实用的Vue自定义指令:

文章目录 一、批量注册指令&#xff0c;新建 directives/index.js 文件二、在 main.js 引入并调用【1】v-copy【2】v-longpress【3】v-debounce【4】v-emoji【5】v-LazyLoad【6】v-permission【7】vue-waterMarker【8】v-draggable 复制粘贴指令 v-copy 长按指令 v-longpress 输…

JUnit单元测试之旅

目录 1. 什么是单元测试和JUnit2. JUnit入门与基本注解2.1测试类的定义:2.2 生命周期注解:2.3断言注解:2.4 参数化单参数多参数通过方法获取参数 2.5 测试套件 三.用到的依赖包 1. 什么是单元测试和JUnit 单元测试(Unit Testing)是对软件中的最小可测试单元进行检查和验证。它…

PyCharm使用指南 - 如何创建密码短语生成器(上)

PyCharm是一种Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外&#xff0c;该IDE提供了一些高级功能&#xff0c;以用于Django框架下的专业Web开发。 PyCharm 最新下载 本文将展示如何使用免费的 PyCharm Community Edition 开…

Java 泛型的介绍

文章目录 1.学习目标2.什么是泛型3.引入泛型语法 4.泛型类的使用语法示例 6.泛型的上界语法示例 7.泛型的方法定义语法示例 8.通配符通配符解决什么问题通配符上界通配符下界 9.包装类基本数据类型和对应的包装类装箱和拆箱自动装箱和自动拆箱 1.学习目标 1.以能阅读 java 集合…

EventLoop事件循环

JavaScript是单线程语言 单线程执行任务队列的问题: 如果前一个任务非常耗时,则后续任务不得不等待,从而导致程序假死的问题。 同步任务和异步任务 ​ 为了防止某个耗时任务程序导致假死的问题,javascript把待执行的任务分为两类: 同步任务(synchronous) 又叫非耗时任务,指…