返回顶部
首页 > 资讯 > 前端开发 > JavaScript >前端算法题解 leetcode50-Pow(x, n)
  • 834
分享到

前端算法题解 leetcode50-Pow(x, n)

2024-04-02 19:04:59 834人浏览 薄情痞子
摘要

目录题目解题思路-分情况讨论代码实现解题思路-分治代码实现题目 题目地址 实现 pow(x, n) ,即计算 x 的整数 

题目

题目地址

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。

示例 1:

输入: x = 2.00000, n = 10

输出: 1024.00000

示例 2:

输入: x = 2.10000, n = 3

输出: 9.26100

示例 3:.

输入: x = 2.00000, n = -2

输出: 0.25000

解释: 2-2 = 1/22 = 1/4 = 0.25

提示:

-100.0 < x < 100.0

-231 <= n <= 231-1

-104 <= xn <= 104

解题思路-分情况讨论

本题可以分几种情况讨论:\

  • 如果 x = 1,那么无论 n 的值是多少,结果都是 1
  • 如果 n = 0,那么无论 x 的值是多少,结果都是 1
  • 如果 n = 1,那么无论 x 的值是多少,结果都是 x
  • 如果 x = -1,那么如果 n 是偶数,结果是 1,否则结果是 -1
  • 如果 n > 0,则结果为 1 *= x n
  • 如果 n < 0,则结果为 1 /= x n

代码实现

var myPow = function(x, n) {
    if(x === 1 || n === 0){
        return 1
    }
    if(x===-1){
        return n % 2 ? -1 : 1
    }
    let res = 1
    if(n>0){
        for(let i = 0;i<n;i++){
            res *= x
        }
        return res
    }
    for(let i = 0;i<-n;i++){
        res /= x
        if(x>0 && res<0.000005){
            return res
        }
    }
    return res
}

解题思路-分治

上面的解题思路虽然能解题,但是因为要真实的进行每一次计算,所以效率比较低。那如何才能提高效率呢?

这里我们可以采用类似二分的方法,将 xn 次方拆分为 x^(n/2) * x^(n/2),以此来加速计算的过程。每次拆分一半,直到 n = 0。因为每次的处理逻辑是相同的,所以可以利用递归函数递归调用自己,而退出条件就是 n = 0

代码实现

var myPow = function(x, n) {
  if(n == 0){
    return 1
  }
  if(n < 0){
    return 1 / myPow(x, -n)
  }
  if(n % 2){
    return x * myPow(x, n - 1)
  }
  return myPow(x * x, n / 2)
}

至此我们就完成了 leetcode-50-Pow(x, n),更多关于前端算法 Pow(x, n)题解的资料请关注编程网其它相关文章!

--结束END--

本文标题: 前端算法题解 leetcode50-Pow(x, n)

本文链接: https://lsjlt.com/news/168261.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 前端算法题解 leetcode50-Pow(x, n)
    目录题目解题思路-分情况讨论代码实现解题思路-分治代码实现题目 题目地址 实现 pow(x, n) ,即计算 x 的整数 ...
    99+
    2024-04-02
  • 后端算法题解LeetCode前缀和示例详解
    目录面试题 01.09. 字符串轮转方法一:模拟思路题解方法二:搜索子字符串思路题解1480. 一维数组的动态和方法一:前缀和思路题解724. 寻找数组的中心下标方法一:前缀和思路解...
    99+
    2024-04-02
  • 前端算法题解leetcode49-字母异位词分组
    目录题目解题思路代码实现题目 题目地址 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词...
    99+
    2024-04-02
  • 前端算法题解leetcode36-有效的数独示例
    目录题目解题思路-分别处理代码实现解题思路-一次扫描判断所有代码实现题目 题目地址 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验...
    99+
    2024-04-02
  • 前端算法题解leetcode114二叉树展开为链表
    目录正文解题思路-基础代码实现解题思路-进阶代码实现正文 题目地址 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用&nbs...
    99+
    2024-04-02
  • web前端面试常见算法题有哪些
    这篇“web前端面试常见算法题有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“web前...
    99+
    2024-04-02
  • JavaScript前端学算法题解LeetCode最大重复子字符串
    目录最大重复子字符串解题思路知识点这是LeetCode的第1668题:最大重复子字符串 最大重复子字符串 给你一个字符串 sequence ,如果字符串 word...
    99+
    2024-04-02
  • 前端算法leetcode109题解有序链表转换二叉搜索树
    目录题目解题思路-基础代码实现解题思路-优化代码实现解题思路-进阶代码实现题目 题目地址 给定一个单链表的头节点  head ,其中的元素 按升序排序&...
    99+
    2024-04-02
  • 前端JavaScript多数元素的算法详解
    目录题目:多数元素方法一:map 实现方法二:排序题目:多数元素 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ...
    99+
    2024-04-02
  • 如何使用C#算法解决求第n个数值问题
    这篇文章主要为大家展示了“如何使用C#算法解决求第n个数值问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用C#算法解决求第n个数值问题”这篇文章吧。已知数列:1,1,2,3,5,8,1...
    99+
    2023-06-18
  • 前端面试中字节的笔试题和算法题示例分析
    这篇文章将为大家详细讲解有关字节的笔试题和算法题示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。题目给定一个包含 m x n 个元素的矩阵(m 行, ...
    99+
    2024-04-02
  • web前端面试中的常见的算法问题有哪些
    这篇文章主要介绍“web前端面试中的常见的算法问题有哪些”,在日常操作中,相信很多人在web前端面试中的常见的算法问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”we...
    99+
    2024-04-02
  • SpringBoot雪花算法主键ID传到前端后精度丢失问题的解决
    目录简介问题描述项目场景问题描述问题复现解决方案法1:全局处理法2:局部处理简介 本文用示例介绍SpringBoot如何解决雪花算法主键ID传到前端后精度丢失问题。 问题描述 Jav...
    99+
    2022-11-13
    SpringBoot雪花算法主键ID精度丢失 SpringBoot 主键ID精度丢失
  • JS前端常见的竞态问题解决方法详解
    目录什么是竞态问题取消过期请求XMLHttpRequest 取消请求fetch API 取消请求axios 取消请求可取消的 promise忽略过期请求封装指令式 promise使用...
    99+
    2022-11-13
    JS前端竞态 前端竞态解决
  • Java雪花算法生成的ID传输前端后精度丢失问题怎么解决
    本文小编为大家详细介绍“Java雪花算法生成的ID传输前端后精度丢失问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java雪花算法生成的ID传输前端后精度丢失问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-07-05
  • 前端算法之TypeScript包含min函数的栈实例详解
    目录前言思路梳理实现代码示例代码前言 基于数据结构: “栈”,实现一个min函数,调用此函数即可获取栈中的最小元素。在该栈中,调用min、push、pop的时...
    99+
    2024-04-02
  • 前端面试必会网络跨域问题解决方法
    目录什么是跨域跨域解决方法1-代理跨域解决方法2-JSONP跨域解决方法3-CORS概述简单请求简单请求的判定简单请求的交互规范需要预检的请求附带身份凭证的请求一个额外的补充什么是跨...
    99+
    2024-04-02
  • 解决前端项目问题,uniapp运行微信开发工具小程序,出现× initialize报错,以及浏览器无法运行
    项目场景: uniapp进行小程序以及多端web页面都不知道如何配置讲项目运行起来。 就会报出无法运行错误。 [微信小程序开发者工具] - initialize [微信小程序开发者工具] [微信小程序开发者工具] × IDE may alr...
    99+
    2023-09-03
    前端 小程序 vue.js 编辑器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作