鑑於n
排列成一行的整數顯示可找到一個峯值的高效算法。峯值是一個不小於其旁邊的兩個數字(或其旁邊的一個數字,如果它在該行的末尾)。算法:在一行中查找峯值
2
A
回答
3
算法存在O(log n)
算法。我們使用分而治之。
find_peak(lo,hi):
mid = (lo+hi)/2
if A[mid] >= A[mid-1], A[mid+1] return mid
if A[mid] < A[mid-1]
return find_peak(lo,mid-1) // a peak must exists in A[1..mid-1]
if A[mid] < A[mid+1]
return find_peak(mid+1,hi) // a peak must exists in A[mid+1..hi]
+1
你回答缺少退出條件。以增加序列爲例。如果lo ==你好,請回復:) :) –
+0
@lcfseth這是真的。我想這個想法應該沒問題。 :) –
+2
此答案無效。以序列「1 9 3 4 5 5 5」,第一個測試是數字「3 4 5」,然後算法選擇上半部分進行遞歸。上半部分沒有高峯。從未考慮下半部分的峯值。 – Skizz
相關問題
- 1. 找峯算法
- 2. 峯值計數器算法
- 3. 查找data.frame中每一行的峯值形狀
- 4. 查找向量中的峯值
- 5. 在Visual Studio上查找性能峯值
- 6. Python中的一個簡單的一維峯值查找程序
- 7. 2D峯查找算法JAVA,找到了一個例子,但不能代碼它
- 8. 在圖中找到峯值的x值
- 9. 查找多個峯在一維數組
- 10. MySql查詢計算瞬間峯值數
- 11. 如何在MATLAB中查找信號峯值的X軸值
- 12. Python/SciPy的峯值搜索算法
- 13. 多維陣列的峯值查找器
- 14. 查找2D直方圖的峯值
- 15. 查找光譜圖的峯值
- 16. 使用ios查找圖形的峯值
- 17. 查找下一個多行的算法
- 18. 如何在數組中找到峯值?
- 19. 在matlab中查找3d峯的體積
- 20. 查找文本駝峯在Ruby中
- 21. 如何在有多個峯值時在數組中找到峯值元素?
- 22. 在Matlab中查找最高未知數的峯值點
- 23. 在遍歷的2D網格中查找峯值
- 24. 找到一個峯的半峯全寬
- 25. 查找算法
- 26. 查找算法
- 27. 查找給定數組的一維峯值
- 28. 找到復值向量峯
- 29. Python Pyalgotrade在Dataseries中查找最近的峯值(最小值或最大值)
- 30. 如何在一維數組中找到峯值
你想要第一個高峯嗎?還是最高峯?最高峯不會是最大值嗎? –
@CharlesBretana一個峯值就足夠了。找到最高峯需要'O(n)'。 –
爲什麼你發佈兩次[相同的問題](http://stackoverflow.com/questions/12867018/algorithm-find-peak-in-a-circle)? –