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
  • 相关阅读:
    asp.net文件操作类
    MSMQ是什么?
    Type.GetType()在跨程序集反射时返回null的解决方法
    ASP.NET反射
    VS单元测试入门实践教程
    详解Linq to SQL
    .Net资源文件全球化
    正则表达式使用详解
    C# 中的委托和事件详解
    python基础
  • 原文地址:https://www.cnblogs.com/yucen/p/9912050.html
Copyright © 2011-2022 走看看