劍指offer python 66 構建乘積陣列

2021-09-25 10:31:50 字數 1967 閱讀 9995

給定乙個陣列 a[0, 1,…, n-1],請構建乙個陣列 b[0, 1,…, n-1],其中 b 中的元素 b[i]=a[0]*a[1]*…*a[i-1]*a[i+1]*…*a[n-1]。要求不能使用除法。

# 下三角,從1開始乘的

for i in

range(1

, length)

: b[i]

= b[i -1]

* a[i -1]

# l指代length

# b=[1,a[0],a[0]*a[1],...,a[0]*...*a[l-2]]

# l=5

# b=[1,a[0],a[0]*a[1],a[0]*a[1]*a[2],a[0]*a[1]*a[2]*a[3]]

temp =

1for i in

range

(length -2,

-1,-

1): temp = temp * a[i +1]

b[i]

*= temp

return b

# 迴圈次數 =l-2-(-1)=l+1

# 第1次迴圈後

# b=[1,a[0],a[0]*a[1],a[0]*a[1]*a[2]*a[4],a[0]*a[1]*a[2]*a[3]] temp=a[4]

# 第2次迴圈後

# b=[1,a[0],a[0]*a[1]*a[4]*a[3],a[0]*a[1]*a[2]*a[4],a[0]*a[1]*a[2]*a[3]] temp=a[4]*a[3]

# 第3次迴圈後

# b=[1,a[0]*a[4]*a[3]*a[2],a[0]*a[1]*a[4]*a[3],

# a[0]*a[1]*a[2]*a[4],a[0]*a[1]*a[2]*a[3]] temp=a[4]*a[3]*a[2]

# 第4次迴圈後

# b=[1*a[4]*a[3]*a[2]*a[1],a[0]*a[4]*a[3]*a[2],a[0]*a[1]*a[4]*a[3],

# a[0]*a[1]*a[2]*a[4],a[0]*a[1]*a[2]*a[3]] temp=a[4]*a[3]*a[2]*a[1]

from functools import

reduce

class

solution

:def

multiply

(self, a)

:# write code here

ifnot a or

len(a)

<0:

return

0 length =

len(a)

b =[1

]* length

for i in

range(0

, length)

: res = a[::

1]res.remove(a[i]

) b[i]

=reduce

(lambda x, y: x * y, res)

# print(b)

return b

劍指offer(Python)替換空格

這道題要求是 將乙個字串中的空格替換成 20 有多少個空格就替換成多少個 20 例如 hello world 中間有兩個空格,則需要輸出的形式是 hello 20 20world 字串首尾的空格亦算在內。class solution def replacespace self,s return 20...

劍指offer Python 替換空格

請實現乙個函式,將乙個字串中的每個空格替換成 20 python字串,有replace方法,可以實現替換,第乙個引數是要替換的內容,第二個引數是替換的新內容 能夠快速完成,果然python作為一種高階語言,不太適合做演算法 但是 replace 相當於 insert 在替換 時,會將原字串元素的位置...

《劍指offer》python 動態規劃

動態規劃是利用空間去換取時間的演算法.主要看 1.初始條件 2.重疊子問題 3.狀態轉移方程 題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 coding utf 8 class solution def jumpfloo...