zoukankan      html  css  js  c++  java
  • 实现 pow(x, n) (Python and C++解法)

    题目:

      计算 x 的 n 次幂函数。

    示例 1: 输入: 2.00000, 10  输出: 1024.00000

    示例 2: 输入: 2.10000, 3    输出: 9.26100

    示例 3: 输入: 2.00000, -2  输出: 0.25000

    解释: 2^-2 = 1/2^2 = 1/4 = 0.25说明: -100.0 < x < 100.0,n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/powx-n

    思路:

      如果直接让x连续相乘,那么时间复杂度是O(n)。通过观察发现:

    如果n是偶数:x^2 = x*x;  x^4 = x^2 * x^2;  x^6 = x^3 * x^3

    如果n是奇数:x^3 = x^2 * x  x^5 = x^4 * x  x^7 = x^6 * x

    Python解法:

     1 class Solution(object):
     2     def myPow(self, x: float, n: int):
     3         if n < 0:
     4             n = -n
     5             x = 1.0 / x
     6         pow = 1  # n为0时的结果
     7         while n:
     8             if n & 1:  # 判断n的奇偶性
     9                 pow = pow * x
    10             x = x * x
    11             n = n // 2
    12         return pow
    13 
    14 
    15 if __name__ == '__main__':
    16     s = Solution()
    17     print(s.myPow(2.0, 3))  # 8.0

    C++解法:

     1 #include "pch.h"
     2 #include <iostream>
     3 using namespace std;
     4 
     5 class Solution {
     6 public:
     7     double myPow(double x, long n) {
     8         if (n < 0) {
     9             n = -n;
    10             x = 1.0 / x;
    11         }
    12         double pow = 1;
    13         while (n) {
    14             if (n & 1)
    15                 pow = pow * x;
    16             x = x * x;
    17             n = n / 2;
    18         }
    19         return pow;
    20     }
    21 };
    22 
    23 int main() {
    24     Solution s;
    25     cout << s.myPow(2.0, 3);  // 8
    26 }
  • 相关阅读:
    主键为整型数据库设计
    raid1与raid5
    asp.net限时发送手机验证码
    利用jQuery与.ashx完成简单的Ajax
    Solr使用in语法查询
    Solr高效利用:Solr实现SQL的查询与统计
    lucene 的评分机制
    fastcgi配置
    安装elasticsearch及中文IK和近义词配置
    php多进程处理
  • 原文地址:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/13160016.html
Copyright © 2011-2022 走看看