面試66題:
題目:構建乘積陣列
給定乙個陣列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]。不能使用除法。
根據劍指offer思路
基本解法:
#-*- coding:utf-8 -*-
class
solution:
defmultiply(self, a):
#write code here
n=len(a)
c=[1]*len(a)
d=[1]*len(a)
b=[1]*len(a)
for i in range(1,n):
c[i]=c[i-1]*a[i-1]
for j in (range(0,n-1))[::-1]:
d[j]=d[j+1]*a[j+1]
for k in
range(0,n):
b[k]=c[k]*d[k]
return b
優化**如下:
#-*- coding:utf-8 -*-
class
solution:
defmultiply(self, a):
#write code here
b=[1]*len(a)
for i in range(1,len(a)):
b[i]=b[i-1]*a[i-1]
tmp=1
for j in range(len(a)-2,-1,-1):
tmp *= a[j+1]
b[j]*=tmp
return b
劍指offer 面試35題
面試35題 題目 複雜鍊錶的複製 題 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路一 python作弊法 解題 coding ...
劍指offer 面試33題
面試33題 題 二叉搜尋樹的後序遍歷序列 題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。解題思路 遞迴 解題 coding utf 8 class solution defverifysquenceof...
劍指offer 面試31題
面試31題 題目 棧的壓入 彈出元素 題 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出...