前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打卡群刷题总结0709—— Pow(x, n)

打卡群刷题总结0709—— Pow(x, n)

作者头像
木又AI帮
发布2020-07-14 11:12:43
2520
发布2020-07-14 11:12:43
举报
文章被收录于专栏:木又AI帮木又AI帮木又AI帮

题目:50. Pow(x, n)

链接:https://leetcode-cn.com/problems/powx-n

实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 示例 3: 输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25 说明: -100.0 < x < 100.0 n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

解题:

1、依次计算x^(2^0),x^(2^1),x^(2^2),...

然后对n进行分解,转换为一组2的幂的和,将对应的数相乘得到答案。

代码:

class Solution(object):
    def myPow(self, x, n):
        """
        :type x: float
        :type n: int
        :rtype: float
        """
        if n == 0:
            return 1

        # 取得正负符号
        negetive = False
        if n < 0:
            negetive = True
            n = -n

        # 得到下标为2^i对应的数
        times = [0, 1]
        res = [1, x]
        while 2 * times[-1] < n:
            times.append(times[-1] * 2)
            res.append(res[-1] * res[-1])

        # 累积
        result = 1
        index = len(times) - 1
        while n > 0:
            while times[index] > n:
                index -= 1
            result *= res[index]
            n -= times[index]

        if negetive:
            return 1.0 / result
        return result

PS:刷了打卡群的题,再刷另一道题,并且总结,确实耗费很多时间。如果时间不够,以后的更新会总结打卡群的题。

PPS:还是得日更呀,总结一下总是好的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档