【LeetCode】342. 4的幂

news/2024/10/30 15:31:00/

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.ppmy.cn/news/115700.html

相关文章

图解Redis和Zookeeper分布式锁 | 京东云技术团队

1.基于Redis实现分布式锁 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2BImFPAP-1685502327043)(null)] Redis分布式锁原理如上图所示&#xff0c;当有多个Set命令发送到Redis时&#xff0c;Redis会串行处理&#xff0c;最终只有一个Set命令执行…

解决警告You are running the esm-bundler build of vue-i18n. It is recommended to configure your bundler

//解决警告You are running the esm-bundler build of vue-i18n. It is recommended to configure your bundler to explicitly replace feature flag globals with boolean literals to get proper tree-shaking in the final bundle. vue.config.js 修改 chainWebpack: co…

ML之NB:基于news新闻文本数据集利用纯统计法、kNN、朴素贝叶斯(高斯/多元伯努利/多项式)、线性判别分析LDA、感知器等算法实现文本分类预测

ML之NB&#xff1a;基于news新闻文本数据集利用纯统计法、kNN、朴素贝叶斯(高斯/多元伯努利/多项式)、线性判别分析LDA、感知器等算法实现文本分类预测 目录 基于news新闻文本数据集利用纯统计法、kNN、朴素贝叶斯(高斯/多元伯努利/多项式)、线性判别分析LDA、感知器等算法实现…

Java通过浏览器请求头(User-Agent)获取 浏览器类型,操作系统类型,手机机型

一&#xff1a;获得浏览器请求头中的User-Agent ? 1 String ua request.getHeader("User-Agent") 二&#xff1a;获得浏览器类型&#xff0c;操作系统类型&#xff1a;(注意&#xff0c;UserAgent类在UserAgentUtils.jar中&#xff0c;自行下载) ? 1 2 3 UserA…

关于终端设备的设备唯一性的那些事之IMEI(转)

最近和别人聊起来数据上报&#xff0c;一起讨论到imei和MAC地址&#xff0c;然后发现一个问题&#xff1a;知道这两个东西都不唯一&#xff0c;但是不知道为什么………… 回来上各种小网站巴拉巴拉找了一下&#xff0c;终于大概了解了前世今生&#xff0c;这里简单汇总一下imei…

(转)webapp兼容移动端的屏幕适配

亲测可用!!!! 屏幕适配终极方案 <meta name"viewport" content"width你的基准像素, user-scalableno" /> 主要就是这句话,加载header中,底下是原文 本文中所指Mobile WebApp是指运行在Mobile WebKit浏览器上的WebApp。本篇文章讲解如何像传统PC网…

iScroll4.2.5中的无法滑动或点击的解决方案(转)

又见iScroll问题&#xff0c;特别是三星手机和iPhone&#xff0c;顺便提一句&#xff0c;现在的项目中他们给div加了height属性来解决不能滚动问题&#xff0c;个人认为是个非常愚蠢的解决方案&#xff0c;我必须使用media query来解决随之而来的不同手机有不同高度问题&#x…

Linux性能优化实战:套路篇-磁盘 I/O 性能优化的几个思路(31)

一、上节回顾 上一节&#xff0c;我们一起回顾了常见的文件系统和磁盘 I/O 性能指标&#xff0c;梳理了核心的 I/O 性能观测工具&#xff0c;最后还总结了快速分析 I/O 性能问题的思路。 虽然 I/O 的性能指标很多&#xff0c;相应的性能分析工具也有好几个&#xff0c;但理解了…