1
A
回答
1
作爲一個粗略的想法,您可以使用最大值(顯然已知之前)的數量作爲附加參數。檢查數組的中間值,如果它是一個局部最大值(或者如果元素的數量是偶數,則在中間的左邊或右邊的值)。如果它不是局部最大值,則搜索左側或右側子陣列中的局部最大值。 C#樣僞代碼中的公式如下:如果需要最大值的位置,則需要額外進行一些指標計算。
List<int> Input; // input array
List<int> Maxima; // output for the maxima
int k; // num of local maxima
void SearchMaxima(List<int> iList, int NumOfMaxima)
{
if (0 == iList.Count() || 0 == NumOfMaxima)
{
// do nothing
}
else
{
if (Middle point of iList is local Maximum)
{
Store middle point of iList to MaximaPositions
SearchMaxima(left half of iList w/o middle point, NumOfMaxima - 1);
SearchMaxima(right half of iList w/o middle point, NumOfMaxima - 1);
}
else
{
SearchMaxima(left half of iList w/o middle point, NumOfMaxima);
SearchMaxima(right half of iList w/o middle point, NumOfMaxima);
}
}
}
相關問題
- 1. 在php中查找所有局部最大值和最小值數組
- 2. 查找某個函數的所有局部最大值
- 3. 動態增加/減少數組大小
- 4. 查找局部最小值/最大值
- 5. 使用jquery增加或減少數值
- 6. 如何按百分比增加或減少所有字段值?
- 7. 在SQL中查找局部最大值和局部最小值
- 8. 算法在遞增,遞減,遞增和遞減數組中查找最大值和最小值
- 9. 在最少的計算次數中查找全局最大值
- 10. CUDA減少找到一個數組的最大值
- 11. Zend +/-按鈕來增加或減少值
- 12. 查找局部最大值C
- 13. Android的CountDownTimer - 增加或減少計數
- 14. 可以通過標誌指示修改(增加或減少)值的函數嗎?
- 15. C++所有局部最大值
- 16. solr可以用來增加/減少嗎?
- 17. 如果我們可以增加/減少一個特定的數組元素,最小總移動數量爲1
- 18. POST數據太大。減少數據或增加「的post_max_size」
- 19. Informix列的最大長度是多少?可以增加多少?
- 20. 增加/減少大量整數
- 21. 拖動增加/減少值
- 22. 在NSString中增加或減少整數
- 23. 從矩陣中找到所有局部最大值
- 24. 數的Python組序列增加或減少某些結果
- 25. 查找數據框中列的增加,減少
- 26. 查找局部最大值/最小值R
- 27. 檢查一個數組是否以最有效的方式排序(增加,嚴格增加,減少,嚴格減少)
- 28. 用numpy查找xy數據點圖的局部最大值?
- 29. 如何在Ruby中爲所有可能的值增加/減少字符?
- 30. 使用Saxon,增加或減少XSLT中的全局變量
你在哪裏想出o(k log n)複雜度? – softwarenewbie7331
可能相關:http://stackoverflow.com/questions/22664976/optimized-algorithm-to-find-all-the-local-maximum?rq=1 – Codor