永恒的蓝色梦想 发表于 2020-5-11 20:32:19

ouyunfu 发表于 2020-5-11 20:31
难道不能用**

不能,算作弊

kinkon 发表于 2020-5-11 20:36:41

永恒的蓝色梦想 发表于 2020-5-11 20:15
过了,但是你的代码没有 return res

忘记了,已修改

永恒的蓝色梦想 发表于 2020-5-11 20:38:36

Twilight6 发表于 2020-5-11 20:08
久违的每日一题




自己实现,这属于作弊

lq775156 发表于 2020-5-11 21:11:36

我是来学习的

Twilight6 发表于 2020-5-11 21:14:02

永恒的蓝色梦想 发表于 2020-5-11 20:38
自己实现,这属于作弊

emmm,不属于吧 是你题目没说清楚
因为**又不是轮子,现在我订正了

wuhao4221961 发表于 2020-5-11 21:19:43

慢慢来最快

March2615 发表于 2020-5-11 21:26:48

难道以后要和那边同步了吗{:10_312:}{:10_258:}

whosyourdaddy 发表于 2020-5-11 21:40:56

def mypow(a,b):
    result = 1
    if b==0:
            return 1
    elif b > 0:
      while b>0:
            result=result*a
            b-=1
    else:
      while b<0:
            result = result/a
            b += 1
    return result

Lao_Long 发表于 2020-5-11 21:42:32

class Solution:
    def myPow(self, x: float, n: int) -> float:
      if x == 0.0: return 0.0
      res = 1
      if n < 0: x, n = 1 / x, -n
      while n:
            if n & 1: res *= x
            x *= x
            n >>= 1
      return res

永恒的蓝色梦想 发表于 2020-5-11 21:49:01

Twilight6 发表于 2020-5-11 21:14
emmm,不属于吧 是你题目没说清楚
因为**又不是轮子,现在我订正了

咦?**不是轮子?谁告诉你的?

永恒的蓝色梦想 发表于 2020-5-11 21:49:45

March2615 发表于 2020-5-11 21:26
难道以后要和那边同步了吗

哪边?

March2615 发表于 2020-5-11 21:54:07

永恒的蓝色梦想 发表于 2020-5-11 21:49
哪边?

Leetcode呀

永恒的蓝色梦想 发表于 2020-5-11 21:54:49

March2615 发表于 2020-5-11 21:54
Leetcode呀

嗯?

我去看了一下……这次凑巧

Twilight6 发表于 2020-5-11 22:24:53

永恒的蓝色梦想 发表于 2020-5-11 21:49
咦?**不是轮子?谁告诉你的?

**属于python的算术运算符呀?怎么定义成轮子了?

永恒的蓝色梦想 发表于 2020-5-11 22:28:04

Twilight6 发表于 2020-5-11 22:24
**属于python的算术运算符呀?怎么定义成轮子了?

emmm……想了一下,**应该算是轮子,不过是自带的{:10_327:}

Twilight6 发表于 2020-5-11 22:31:45

永恒的蓝色梦想 发表于 2020-5-11 22:28
emmm……想了一下,**应该算是轮子,不过是自带的

{:10_245:}好吧, 那也没事 我订正了你帮我看看我代码有没什么问题嘿嘿{:10_297:}

永恒的蓝色梦想 发表于 2020-5-11 22:37:50

Twilight6 发表于 2020-5-11 20:08
久违的每日一题

x=0.00001,n=2147483647 超时

Twilight6 发表于 2020-5-11 22:40:11

永恒的蓝色梦想 发表于 2020-5-11 22:37
x=0.00001,n=2147483647 超时

{:10_245:}{:10_245:}{:10_245:}瑟瑟发抖....
好吧 我放弃了...改天看标准答案吧{:10_277:}

永恒的蓝色梦想 发表于 2020-5-11 22:46:16

Twilight6 发表于 2020-5-11 22:40
瑟瑟发抖....
好吧 我放弃了...改天看标准答案吧

没有标准答案https://fishc.com.cn/static/image/smiley/ARU/aru-1x-1_005.png

March2615 发表于 2020-5-11 23:08:10

1.暴力求解,肯定超时,但是可以根据暴力求解优化
def myPow_0(x: float, n: int)-> float:
    ans = 1.0
    if n == 0:
      return ans
    for i in range(1, abs(n) + 1):
      ans *= x
    return ans if n > 0 else 1.0 / ans# 处理n为负数的方法
2.进行优化,不要乘n次,而是每次乘平方,对n的基偶进行判断,奇数要额外乘一个x(用递归特别容易理解)
def myPow_1(x: float, n: int)-> float:
    def helper(N: int):
      if N == 0:
            return 1.0
      y = helper(N // 2)
      return y * y * x if N % 2 else y * y

    return helper(n) if n >= 0 else 1.0 / helper(-n)
3.想到一个以前做过的题,用1,2,4,8,16,32,64,128的加法组合表示1-255的数(二进制)
和这题比较像,转化为n用这些数表示,然后幂相加就是数相乘
def myPow_2(x: float, n: int) -> float:
    if n == 0:
      return 1.0
    N, ans = abs(n), 1.0
    x_order = ans * x
    while N:
      if N % 2:
            ans *= x_order
      x_order *= x_order
      N //= 2
    return ans if n > 0 else 1.0 / ans
4.理解了之后,就可以用位运算符中的右移运算符
def myPow_3(x: float, n: int) -> float:
    N, ans = abs(n), 1.0
    while N:
      if N & 1:
            ans *= x
      x *= x
      N >>= 1
    return ans if n >= 0 else 1.0 / ans

我还是最喜欢3{:10_277:}
页: 1 [2] 3
查看完整版本: Python:每日一题 390