力扣之 4 的幂 & 3 的幂 & 2 的幂(递归思想)

题目描述

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x

示例 1:

输入: n = 16
输出: true

示例 2:

输入: n = 5
输出: false

示例 3:

输入: n = 1
输出: true
力扣原题目地址 4 的幂:https://leetcode.cn/problems/...

类似题目还有3的幂,2的幂,用递归思想解决,一个意思

力扣原题目地址 3 的幂:https://leetcode.cn/problems/...

力扣原题目地址 2 的幂:https://leetcode.cn/problems/...

思路分析

  • 整数n如果是0,肯定不是4的幂了,如果是1,就是40次幂
  • 这样的话,我们就把整数n不停的除以4,如果除到最后的结果是1,那么是幂。
  • 如果除的话,得到的数是一个小数,那么就肯定不是幂了

这里又延伸出一个问题,就是,js中如何判断一个数,是不是整数?

没关系,语言的设计者们,早已经考虑到这种情况了,于是给我们一个api叫做:Number.isInteger(),用于判断一个数字是不是整数,如下:

Number.isInteger(0);         // true
Number.isInteger(1);         // true
Number.isInteger(-100000);   // true

Number.isInteger(0.1);       // false
Number.isInteger(Math.PI);   // false

Number.isInteger(Infinity);  // false
Number.isInteger(-Infinity); // false
Number.isInteger("10");      // false
Number.isInteger(true);      // false
Number.isInteger(false);     // false
Number.isInteger([1]);       // false

这样的话,咱们直接拿来使用即可

代码附上

var isPowerOfFour = function (n) {
    if (n === 0) { // 0肯定不是,直接返回false
        return false
    }
    else if (n == 1) { // 4的0次方等于1,是返回true
        return true
    } else {
        n = n / 4 // 4的幂、3的幂、2的幂
        if (Number.isInteger(n)) { // 如果是整数,就继续递归
            return isPowerOfFour(n) // return的结果为递归执行的结果
        } else { // 如果不是整数,就说明绝对不是4的n次方
            return false
        }
    }
};

提交结果图

嗯,凑合还行...

3的幂、2的幂的题目,改一下值即可

每一个不曾起舞的日子,都是对生命的辜负

830 声望
553 粉丝
0 条评论
推荐阅读
什么?都2023年了你居然还不会table表头单元格合并?(附el-table单行、多级表头多个案例)
问题描述本文记录el-table表头合并的多种情况,并提出对应解决方案,估计能帮到部分道友原生table知识点复习我们知道:一个简单的table表格一般由一个或多个tr、th或td标签组成(嵌套)tr标签定义表格行(table-r...

水冗水孚2阅读 771

封面图
【每日一题】T 秒后青蛙的位置
1377. T 秒后青蛙的位置关键词:深度优先题目来源:1377. T 秒后青蛙的位置 - 力扣(Leetcode)题目描述 {代码...} 给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下:在...

字节幺零二四阅读 683

封面图
【算法竞赛】力扣周赛(节选)2022-04-30
力扣周赛(节选)2022-04-306404. 将数组清空关键词:树状数组、找规律题目来源:6404. 将数组清空 - 力扣(Leetcode)——力扣第 103 场双周赛第4题题目描述 {代码...} 给你一个包含若干 互不相同 整数的数组 nums...

字节幺零二四阅读 665

封面图
【每日一题】翻转子数组得到最大的数组值
给你一个整数数组 nums 。「数组值」定义为所有满足 0 <= i < nums.length-1 的 |nums[i]-nums[i+1]| 的和。

字节幺零二四阅读 616

封面图
【每日一题】摘水果
在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] = [positioni, amounti] 表示共有 amounti 个水果放置在 positioni 上。fruits 已经按 positioni 升序排...

字节幺零二四阅读 553

封面图
【每日一题】使二叉树所有路径值相等的最小代价
给你一个整数 n 表示一棵 满二叉树 里面节点的数目,节点编号从 1 到 n 。根节点编号为 1 ,树中每个非叶子节点 i 都有两个孩子,分别是左孩子 2 * i 和右孩子 2 * i + 1 。

字节幺零二四阅读 479

封面图
leetcode 2413 最小偶倍数
今天这题比较简单,一行代码就解决了,思路其实简单,就是判断下当前数的奇偶性,如果是偶数,那么最小公倍数肯定就是数本身;如果是奇数,那么就是两个数的乘积。

MMzhe阅读 477

封面图

每一个不曾起舞的日子,都是对生命的辜负

830 声望
553 粉丝
宣传栏