劍指offer第二版 面試題66(java)

2021-09-24 09:10:53 字數 732 閱讀 1657

面試題:構建乘積陣列

題目:

給定乙個陣列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]

不能使用除法

思路:

一、暴力解法的時間複雜度為o(n²)

二、b[i] = a[0]×a[1]×……×a[i-1]×a[i+1]×……×a[n-1]可分為 a[0]×a[1]×……×a[i-1]和a[i+1]×……×a[n-1]兩個部分的乘積

即b[i] = 【a[0]×a[1]×……×a[i-1]】 × 【a[i+1]×……×a[n-1]】

設c[i] = a[0]×a[1]×……×a[i-1]、d[i] = a[i+1]×……×a[n-1]

可知c和d可自下而上計算,避免了重複的計算——c[i] = c[i-1]×a[i-1]   d[i] = d[i+1]×a[i+1]

分別儲存c和d,在計算b時,只需要將對應的c和d相乘

**:

public class q66 ;

int b = multipy(a);

if(b!=null)

for(int i=0;ireturn b;

}else

}}

劍指offer第二版 面試題6(java)

面試題6 從尾到頭列印鍊錶 題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值 鍊錶的結點定義如下 public class listnode 注意 面試中,如果打算修改輸入的資料,最好先問好是否資料是允許修改的 思路 1.遍歷順序從頭到尾,列印順序從尾到頭,第乙個結點最開始被訪問,但是最...

劍指offer第二版 面試題8 java

題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標 分析 情況 一 有右子樹,這時只需要把其右孩子作為下乙個遍歷的 並不是要找的 節點,然後沿著該節點的左子樹 如果有的話 出發,直到遇到葉子節點,那麼該葉子節...

劍指offer第二版 面試題9(java)

面試題9 用兩個棧實現佇列 題目描述 方法 兩個棧 stack1 stack2 插入時,直接放入stack1 刪除時,直接彈出pop2中的物件 如果pop2為空,則先將pop1中的物件放入stack2中,再從stack2裡pop第乙個 如 依次放入stack1中1 2 3,在彈出並放入stack2中...