力扣342(java)-4的幂(简单)
题目:
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x
示例 1:
输入:n = 16
输出:true
示例 2:
输入:n = 5
输出:false
示例 3:
输入:n = 1
输出:true
提示:
-231 <= n <= 231 - 1
进阶:你能不使用循环或者递归来完成本题吗?
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/power-of-four
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
一、常规解法
与判断是否为2的幂次方类似,在计算迭代的时候换一下数字
1.如果n的值 <= 0,肯定不为4的幂次方,直接返回false;
2.在对4取余为0的前提下,一直对n除4,如果是4的幂次方,最终的 n=1,返回true,否则 n = 0,返回false。
代码:
1 class Solution {
2 public boolean isPowerOfFour(int n) {
3 if(n <= 0) return false;
4 while(n % 4 == 0){
5 n /= 4;
6 }
7 return n == 1;
8 }
9 }

二、位运算
如果是4的幂次方一定为2的幂次方,先判断是否为2的幂次方,如果是,再对n与3取余,如果n 为4的幂次方,则与3取余一定为1。
例如: 8 是2的幂次方,但不是4的幂次方,8 % 3 == 2
16是2的幂次方也是4的幂次方,16 % 3 == 1
代码:
1 class Solution {
2 public boolean isPowerOfFour(int n) {
3 return n > 0 && (n & (n-1)) == 0 && n % 3 == 1;
4 }
5 }

力扣342(java)-4的幂(简单)的更多相关文章
- 力扣485. 最大连续1的个数-C语言实现-简单题
题目 [题目传送门] 给定一个二进制数组, 计算其中最大连续1的个数. 示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3 ...
- 力扣566. 重塑矩阵-C语言实现-简单题
题目 传送门 在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据. 给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要 ...
- 力扣832. 翻转图像-C语言实现-简单题
题目 传送门 文本 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果. 水平翻转图片就是将图片的每一行都进行翻转,即逆序.例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, ...
- 力扣算法经典第一题——两数之和(Java两种方式实现)
一.题目 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数, 并返回它们的数组下标. 你可以假设每种输入只会对应一 ...
- 力扣561. 数组拆分 I-C语言实现-简单题
题目 传送门 给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(a ...
- 力扣896. 单调数列-C语言实现-简单题
题目 传送门 文本 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的. 如果对于所有 i <= j, ...
- 力扣算法题—069x的平方根
实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...
- 力扣题解-LCP 06. 拿硬币
题目描述 桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中.我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数. 示例 1: 输入:[4,2,1] 输出:4 解释: ...
- 【力扣leetcode】-787. K站中转内最便宜的航班
题目描述: 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 p ...
- 【力扣】188. 买卖股票的最佳时机 IV
给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 k 笔交易. 注意:你不能同时参 ...
随机推荐
- k8s创建Pod的流程
Kubernetes(k8s)中Pod的创建过程是一个涉及多个组件协作的复杂流程,下面将详细描述这个过程,确保内容的详尽性和深度. 一.用户提交创建请求 Pod的创建始于用户通过kubectl命令行工 ...
- stm32文件系统读写操作调试总结
一 问题 最近使用到了文件系统的读写,中间遇到了一些问题值得深思. 二 源码解析 创建文件: FRESULT res; do { sprintf(filename,"/sensor_si ...
- stm32 使用多串口通信调试总结
前记: stm32使用多个串口通信,这个项目遇到了不少问题,值得反思和深入总结一下. 提纲: 这次的问题,主要有几个部分组成: A 多串口的DMA配置,这个需要注意,尽量不要使用同一个DMA ...
- 一个简易的ORM框架的实现(一)
一个简易的ORM框架的实现 ORM ORM---操作数据库---对象关系映射 ORM(Object Relational Mapping)框架采用元数据来描述对象与关系映射的细节.只要提供了持久化类与 ...
- Handler源码解析
Handler源码解析 一.基本原理回顾 在android开发中,经常会在子线程中进行一些操作,当操作完毕后会通过handler发送一些数据给主线程,通知主线程做相应的操作. 探索其背后的原理:子线程 ...
- Docker 中使用 scratch 镜像构建 Go 应用镜像,容器报错:X509: Certificate Signed by Unknown Authority
本文首发于 Ficow Shen's Blog,原文地址: Docker 中使用 scratch 镜像构建 Go 应用镜像,容器报错:X509: Certificate Signed by Unkno ...
- C# 二维码生成、识别,去除白边、任意颜色
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Docker部署之使用docker-compose部署(全新的干净的服务器,从0开始搭建)
部署环境准备 安装yum # 安装yum工具 yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken 安装d ...
- KingbaseES V8R6 集群运维案例 -- 脚本部署集群后ssh无法连接
案例说明: 在kylin V10环境下,通过脚本方式部署KingbaseES V8R6集群后,发现ssh无法连接主机,通过分析发现在脚本部署过程中会对系统环境进行优化配置,在修改了/etc/ssh/s ...
- 【Java】这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
String s1 = "a"; String s2 = s1 + "b"; String s3 = "a" + "b" ...