zoukankan      html  css  js  c++  java
  • 【剑指Offer】10数值的整数次方

    题目描述

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

    时间限制:1秒;空间限制:32768K

    解题思路

    思路一

    本题的难点在于考虑问题要全面,要考虑到0^{0}以及exponent为负数的情况。

    Python代码:

    # -*- coding:utf-8 -*-
    class Solution:
        def Power(self, base, exponent):
            # write code here
            result = 1
            if base==0 and exponent==0:
                return 1
            if exponent == 0:
                return 1
            elif exponent > 0:
                for i in range(exponent):
                    result = result * base
            else:
                for i in range(-exponent):
                    result = result * 1/base
            return result

    思路二

    使用快速幂算法。

    # -*- coding:utf-8 -*-
    class Solution:
        def Power(self, base, exponent):
            # write code here
            if base == 0:
                return 0
            if exponent == 0:
                return 1
            e = abs(exponent)
            tmp = base
            res = 1
            while(e > 0):
                #如果最后一位为1,那么给res乘上这一位的结果
                if (e & 1 == 1):     #n&1 等价于 (n%2)==1
                    res =res * tmp
                e = e >> 1           #n>>=1 等价于 n/=2
                tmp = tmp * tmp
            return res if exponent > 0 else 1/res
  • 相关阅读:
    数据库设计范式
    SQL 触发器
    SQL查询上月和本月两个月的语句
    angularjs学习总结 详细教程
    指令
    重复 HTML 元素
    AngularJS 数据绑定
    AngularJS 指令.
    AngularJS 数组
    AngularJS 对象
  • 原文地址:https://www.cnblogs.com/yucen/p/9912050.html
Copyright © 2011-2022 走看看