java数据结构与算法刷题-----LeetCode342. 4的幂

LeetCode 面试经典 150 题回顾 最经典 150 题,掌握面试所有知识点 面试经典 150 题 : 题目分析、解题思路、复杂度分析、代码展示 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

文章目录

在这里插入图片描述

位运算

解题思路:时间复杂度O( 1 1 1),空间复杂度O( 1 1 1)
  1. 4的幂,一定是2的幂,所以它具备2的幂的性质,二进制中只有1个1
  2. 因此使用和2的幂一样的方法,请参考
🏆LeetCode231:2 的幂(位运算,2的幂满足(n & -n) == n; (n & (n-1)) == 0;)https://blog.youkuaiyun.com/grd_java/article/details/125972618
  1. 但是4的幂还有额外的条件,我们观察4的幂的形式
  1. 4 0 = 1 = 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0001 4^0 = 1 = 0000,0000,0000,0000,0000,0000,0000,0001 40=1=0000,0000,0000,0000,0000,0000,0000,0001
  2. 4 1 = 4 = 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0100 4^1 = 4 = 0000,0000,0000,0000,0000,0000,0000,0100 41=4=0000,0000,0000,0000,0000,0000,0000,0100
  3. 4 2 = 16 = 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0001 , 0000 4^2 =16= 0000,0000,0000,0000,0000,0000,0001,0000 42=16=0000,0000,0000,0000,0000,0000,0001,0000
  4. 4 3 = 64 = 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0100 , 0000 4^3 =64= 0000,0000,0000,0000,0000,0000,0100,0000 43=64=0000,0000,0000,0000,0000,0000,0100,0000
  1. 我们发现每个1都出现在了偶数位置上[…,7位置,6位置,5位置,4位置,3位置,2位置,1位置,0位置]
  1. 4 0 = 1 = 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0001 4^0 = 1 = 0000,0000,0000,0000,0000,0000,0000,0001 40=1=0000,0000,0000,0000,0000,0000,0000,0001中的1出现在0位置
  2. 4 1 = 4 = 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0100 4^1 = 4 = 0000,0000,0000,0000,0000,0000,0000,0100 41=4=0000,0000,0000,0000,0000,0000,0000,0100中的1出现在2位置
  3. 4 2 = 16 = 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0001 , 0000 4^2 =16= 0000,0000,0000,0000,0000,0000,0001,0000 42=16=0000,0000,0000,0000,0000,0000,0001,0000中的1出现在4位置
  4. 4 3 = 64 = 0000 , 0000 , 0000 , 0000 , 0000 , 0000 , 0100 , 0000 4^3 =64= 0000,0000,0000,0000,0000,0000,0100,0000 43=64=0000,0000,0000,0000,0000,0000,0100,0000中的1出现在6位置
  1. 因此,我们需要额外在2的幂的基础上,加一条规则,那就是n的二进制串中的1,是否在偶数位置上。
  1. 我们将奇数位置标识出来:(10101010101010101010101010101010)二进制中,只对奇数位置操作
  2. 当然如果转换为16进制,它会比较好看一点:其16进制形式为0xaaaaaaaa
  3. 如果n&0xaaaaaaaa ==0,就说明n的二进制中的1,只出现在偶数位置上。因为如果出现在奇数位置上,两个二进制为都是1,与操作过后的结果一定也是1.
  4. 当然我们可以标识偶数位置(01010101010101010101010101010101) = 0x55555555
  5. 如果n& 0x55555555 = n的话,就说明n中1的位置正好在偶数位置上
代码
  1. 将n的二进制串,取出末位1,剩下的二进制串结果为0,就说明是2的幂。然后判断n&0xaaaaaaaa是否为0,来判断其中1的位置是否在偶数位置上

在这里插入图片描述

class Solution {
    public boolean isPowerOfFour(int n) {
        //(10101010101010101010101010101010)二进制中,只对奇数位置操作的辅助二进制串,其16进制形式为0xaaaaaaaa
        return n > 0 && //4的幂必然是正数
               (n & (n-1)) == 0 && //4的幂一定也是2的幂,2的幂的性质是,二进制中只有1个1
               (n & 0xaaaaaaaa) == 0; //4的幂有另一个性质,二进制中1的位置必然出现在偶数位置上(...2位置,1位置,0位置)
    }
}
  1. 只取出n的二进制中末位的1,如果取出的1的十进制和n的十进制相同,说明n是2的幂(二进制中只有1个1)。然后通过判断是否n& 0x55555555 == n,来确定n的二进制中的1是否只出现在偶数位置上
    在这里插入图片描述
class Solution {
    public boolean isPowerOfFour(int n) {
        //(10101010101010101010101010101010)二进制中,只对奇数位置操作的辅助二进制串,其16进制形式为0xaaaaaaaa
        //(01010101010101010101010101010101) = 0x55555555是只对偶数位置操作的辅助二进制串
        return n > 0 && //4的幂必然是正数
               (n & (-n)) == n && //4的幂一定也是2的幂,2的幂的性质是,二进制中只有1个1
               (n & 0x55555555) == n; //4的幂有另一个性质,二进制中1的位置必然出现在偶数位置上(...2位置,1位置,0位置)
    }
}
LeetCode 热题 100 回顾 力扣最受刷题发烧友欢迎的 100 道题 LeetCode 热题 100 : 题目回顾、解题思路、复杂度分析、代码实现、验证算法 阅读详情

相关推荐

GAMES101:MacOS作业环境搭建

查看gcc/clang的位置产看gcc/clang的版本1.1.2 安装cmake。

weixin_38844255的博客 715

LeetCode第34题-在排序数组中查找元素-java实现-图解思路与手撕代码

LeetCode第34题-在排序数组中查找元素-java实现-图解思路与手撕代码

weixin_45271005的博客 725

FPGA笔试题知识点汇总(21~40)

FPGA笔试题知识点汇总(21~40)

weixin_52487896的博客 5874

leetcode -34 -在排序数组中查找元素的第一个和最后一个位置 -java版

文章目录题目代码 题目 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: [3,4] 示例 2: 输入: nums = [5,7,7,8,8,10], target = 6 输出: [-1,-1] 代码 /* * @lc app=leetcode

lingle1的博客 374

Qt QWebEngine实战:手把手教你将Vue3/React前端项目嵌入C++桌面程序

本文详细介绍了如何利用Qt的QWebEngine模块将Vue3/React前端项目无缝嵌入C++桌面程序,实现现代前端框架与原生C++的深度整合。通过环境准备、项目架构设计、前端适配、Qt端集成、双向通信建立及性能优化等步骤,开发者可以高效构建兼具Web灵活性和本地系统能力的混合应用。

weixin_28736355的博客 390

从内参矩阵到归一化平面:揭秘相机成像的标准化核心

本文深入解析了相机成像中的核心概念——归一化平面。通过拆解内参矩阵(包含焦距、主点等参数)的作用,详细阐述了如何将像素坐标转换为与具体相机硬件无关的归一化坐标。这一标准化过程是计算机视觉算法(如多相机系统对齐、视觉SLAM)实现跨设备通用性的关键,能有效提升算法的鲁棒性和泛化能力。

opencv7vision的博客 449

leetcode 34 java

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗? 示例 1: 输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4] 示例 2: 输入:nums = [5,7,7,8,8,10], target = 6 输出:[-1,-1] 示例 3: 输入:nums = [], t

是木子啦~ 370

给跨代引用记一本账:Java GC 的分配路径、卡表写屏障与收集器版图快速回顾

本文把 Java GC 的零散名词串成一条推理链路:从 TLAB 指针碰撞分配、逃逸分析,到 Eden、Survivor 与晋升的四条路,重点拆解卡表与写屏障如何为老年代指向新生代的引用记账,及 Minor GC 如何只扫脏卡。基于 JDK 8 实测:分散写使 Young GC 停顿涨 10~15 倍,条件卡标记消除卡表伪共享,计数循环让 System.gc 等待 2.7 秒,Survivor 过小使晋升量增加约 400 倍。文末梳理 JDK 8 到 27 的收集器演进、选型路径与排查顺序。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 17万+

LeetCode 33(Java解法)

题目: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是O(logn) 级别。 示例 1: 输入: nums = [4,5,6,7,0...

baidu_25364411的博客 487

分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信

🔥 分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信

XiaoqiangClub的博客 477

机器人动力学仿真软件:V-REP (CoppeliaSim)_(15).仿真项目案例分析

通过以上几个具体的仿真项目案例,我们展示了如何在V-REP (CoppeliaSim)中进行二次开发,实现复杂的机器人动力学仿真任务。这些案例涵盖了六轴机械臂的运动学仿真、移动机器人的路径规划和避障、以及无人机的飞行控制和环境感知。每个项目都通过编写Lua脚本实现了对机器人模型的控制和任务执行,并通过仿真结果分析验证了算法的有效性和系统性能。希望这些案例能够为读者在实际项目中使用V-REP (CoppeliaSim)提供有益的参考和启发。

kkchenjj的博客 1294

leetcode解题之34. Search for a Range java 版(数字在排序数组中出现的次数)

leetcode解题之34. Search for a Range java 版(数字在排序数组中出现的次数)

mine_song的博客 1097

基于SAHI算法优化YOLOv8的小目标检测性能研究

SAHI(SliceAwareHyperInference)是一种推理优化算法,通过将大图切片为小块并分别推理的方式,实现更精细的小目标检测。提升小目标检测精度:切片后的小目标在每个小块中占比更大,模型能够更好地聚焦。兼容性强:可直接集成到现有目标检测框架中(如YOLO系列、Detectron2等)。支持大分辨率图片和视频推理:减少硬件对大图推理的限制。本文详细探讨了如何通过SAHI(切片辅助超推理算法)结合YOLOv8模型,有效提升小目标检测性能,尤其是在高分辨率图片和视频场景中表现优异。

博客 2371

leetcode刷题记录

刷题过程记录

洪肥肥的博客 2063

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java实现 LeetCode 342 4的幂

342. 4的幂 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶: 你能不使用循环或者递归来完成本题吗? class Solution { public boolean isPowerOfFour(int num) { int x = 0x5555...

南 墙 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LeetCode题练习与总结:4的幂--342

本文详细介绍了如何判断一个整数是否为4的幂次方,包括解题思路、具体代码实现、时间复杂度与空间复杂度分析,以及涉及的知识点,为理解位操作和算法逻辑提供了清晰的指导。

一直学习永不止步 915

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LeeCode 第 342 .4的幂 Java解法

342. 4的幂 https://leetcode-cn.com/problems/power-of-four/ 这题其实如果先不管进阶,还是蛮简单的,首先我们只要保证除以4余数一直为0,然后不断的把结果继续赋值到n,如果能到1,那么就是4的幂次方了。 class Solution { public boolean isPowerOfFour(int num) { if ...

RAYFUXK的专栏 297

LeetCode刷题笔记(Java)---第341-360题

文章目录前言笔记导航341.扁平化嵌套列表迭代器 前言 需要开通vip的题目暂时跳过 笔记导航 点击链接可跳转到所有刷题笔记的导航链接 341.扁平化嵌套列表迭代器 给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。 列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。 解答 public class NestedIterator implements Iterator<Integer> { private St

gongsenlin341的博客 539

【力扣刷题笔记(二)】特别技巧,模块突破,45道经典题目分类总结,在不断巩固中精进

必会的基础算法:贪心,双指针,二分,搜索,动态规划。还没掌握的可以从这里开始哦:【力扣刷题笔记】由简到难,模块突破, 你与AC只差一句提示。 下面是数学技巧、位运算、基础数据结构 模块

ly甲烷的博客 1792

LeetCode刷题事件记录(Java)

LeetCode刷题事件记录(一) 前言题目一:两数之和(简单)题目二:两数相加(中等)题目三:无重复字符的最长子串题目四:题目五: 前言 许多年了,果然我还是不喜欢写文章这类活动,包括写博客在内,虽然也并不是无事可写,但丰 是丰富的感性使得我有太多的灵光一闪,想细细写下却又因为斟字酌句而失了原本的味道,因此不如弃笔不 写。不过年岁渐长,所思所想又与先时不同,故此,准备开启我的博客之旅,记录下...

Bhxxz576的博客 252

Leetcode第2题,两数相加算法——最易理解Java解法

我们先来看一下题,如果对链表不太理解的话,可以看一下这篇https://blog.csdn.net/weixin_44407699/article/details/97612030 给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以...

Lanly-Li的博客 5946

【LeetCode & 剑指offer刷题】发散思维题6:231. Power of Two(系列)

【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...) 231.Power of Two Given an integer, write a function to determine if it is a power of two. Example 1: Input: 1 Output: true Example 2: Inp...

weixin_30621959的博客 78

力扣刷题篇之位运算

本系列是个人力扣刷题汇总,本文是数与位。刷题顺序按照[力扣刷题攻略] Re:从零开始的力扣刷题生活 - 力扣(LeetCode)位运算其实之前的左程云算法与数据结构代码汇总之排序(Java)-优快云博客也有总结到过。原数异或0等于本身,原数异或本身等于0。异或可以看作无进位相加。布隆过滤器这里难一点,其他都很简单,开心!DC3算法还要去搞清楚一下。

m0_66076989的博客 1445

java power_LeetCode算法题-Power of Four(Java实现-六种解法)

这是悦乐书的第205次更新,第216篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第72题(顺位题号是342)。给定一个整数(带符号的32位),写一个函数来检查它是否为4的幂。例如:输入:16输出:true输入:5输出:false跟进:你可以在没有循环/递归的情况下解决它吗?本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用...

weixin_42524792的博客 231

Leetcode寒假刷题 Day01

文章目录前言一、002 两数相加1. 题目描述2. 解题思路3. 代码实现二、004 寻找两个正序数组的中位数1. 题目描述2. 解题思路3. 代码实现三、005 最长回文子串1. 题目描述2. 解题思路3. 代码实现总结 前言 之前报名了DataWhale的LeetCode腾讯精选50题的组队刷题班,正好也借助寒假的时间来提升自己的编程能力和思维能力,同时也能交到一些志同道合的朋友,因此从今天开始,我就正式开始刷LeetCode腾讯精选练习题,也希望我的博客能给大家带来启发。 一、002 两数相加 1.

qq_42833339的博客 643

Java | Leetcode Java题解之第342题4的幂

Java | Leetcode Java题解之第342题4的幂

m0_57195758的博客 397
上一篇: java数据结构与算法刷题-----LeetCode260. 只出现一次的数字 III
下一篇: java数据结构与算法刷题-----LeetCode693. 交替位二进制数
ydenergy_殷志鹏
博客等级 码龄7年 5885粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值