九章演算法面試題33 陣列波峰

2021-07-02 12:41:08 字數 398 閱讀 9658

乙個陣列a[1..n],假設陣列中沒有任何相鄰兩數相等,滿足a[1]n。a[i]被稱為波峰,當且僅當a[i]>a[i-1]並且a[i]>a[i+1]。請找到陣列中的乙個波峰。假設陣列中存在相鄰相等的數,該怎麼做?

根據條件a[1]a[n]可知a中一定存在波峰。用二分法,選擇中點mid, 如果a[mid] 是波峰,則得到結果;如果a[mid]

這個考察的是二分法。從思考的角度來講,首先面試者要分析出,題目中所給的幾個條件所以代表的意義(a中一定存在波峰),然後通過二分法逐漸縮小可能存在解的區間。答出二分法的解法以後,進一步會問,如果a中的相鄰兩數可能相等,該怎麼做?此時面試者需要從頭梳理條件,分析出,a中已經不一定存在波峰了,每次二分以後,也難以每次確定哪邊會有波峰。因此,如果相鄰兩數可能相等,則需要o(n)的演算法複雜度來找到a中的波峰。

九章演算法面試題87 最小子陣列

www.jiuzhang.com 給定乙個整數陣列,找到乙個具有最小和的子陣列。返回其最小和。這道題和max subarray很類似,我用local 和 global 的dp方式闊以解決這道 那麼我們來看動態規劃的四個要素分別是什麼?state localmin i 表示以當前第i個數最為結尾的最小...

九章演算法 Google面試題 內積

描述 給定長度為n的a陣列,長度為k的b陣列 你可以從a陣列裡取k個數 規則如下 即每次可以從a陣列的最左邊或者最右邊取走乙個數,取走的數從陣列中移除 將取出的ai按取出的順序組成c陣列 求b與c的內積最大值 b與c內積為 i 0k 1bi ci 解釋1 a 1,4,3,2,5 b 1,2,3,4 ...

九章演算法面試題32 小球排序

有紅黃藍三色的小球若干排成一列,這些小球進行排序,請使用盡量少的空間和時間。假設順序為紅色黃色藍色。用兩根指標從頭開始遍歷,第一根指標遇到非紅色時停下,如果第二根指標找到第一根指標之後的第乙個紅色停下,交換兩根指標所指顏色。重複上述過程。直到第二根指標找不到任何紅色。此時第一根指標到最後都是黃色或藍...