假設我們有一個簡單的(非關聯)數組,其中包含100001個值,並且這些值以未排序的順序設置,如45,12,32,23。我們知道在這個數組中有1對數字,如何查找它最佳 - 不通過2個foreach循環,甚至不通過2與100001/2分區循環?通過數組搜索並找到1個最佳耦合?
回答
$result=array_count_values($arr);
$value=array_search(2, $result);
print $value;
男人,放鬆。 1)這個代碼將找到任何數字的任何對,「2」代表「對」。閱讀手冊。 2)php的功能總是比你的代碼更快。如果這是你的家庭作業和理論上的問題 - 問問http://programmers.stackexchange.com/ – 2011-05-17 15:24:30
因爲你的數組沒有排序,不是隨機scatteryshot其他唯一的搜索方法是掃描陣列依次找你兩個數字:
$first_key = null;
$second_key = null;
foreach($array as $key => $val) {
if ($val == $first_number) {
$first_key = $key;
}
if ($val == $second_number) {
$second_key = $key;
}
if (!is_null($first_key) && !is_null($second_key)) {
break;
}
}
一旦兩個數字都被找到,或者你到達數組的末尾,循環將退出。
可能是這個'foreach($ arr AS $ val1){ foreach($ arr AS $ val2){ if( $ val1 === $ val2)return $ val1; } }'不,我說這不是最理想的,我知道這一點,並且已經寫下了它。只是仔細閱讀傢伙。 – 2011-05-17 15:39:05
我確實仔細閱讀過。您發佈了一些逗號分隔的數字片段,並說您想查找「情侶號碼」。也許你應該說如果它是一個多維數組,或者更好的辦法是發佈一大堆var_dump/print_r輸出來展示它的真實外觀。 – 2011-05-17 15:40:37
是嗎?和? '$ array [0] = 1; $ array [100001] = 42'。你去,100001陣列元素。我的眼睛很好,你需要處理你的問題提問能力。 – 2011-05-17 15:56:41
- 1. 通過匹配值搜索輔助數組併合併到主數組中
- 2. 搜索數組,並找到depedent項目
- 3. 通過全文搜索搜索一個句子及其組合
- 4. 通過php數組搜索
- 5. 在數組中搜索並找到最大的對象
- 6. Java通過兩個數組搜索
- 7. 通過組合框項搜索
- 8. 找到最佳組合的算法
- 9. 搜索數組並返回結果的最佳方法
- 10. 搜索通過數組,並返回一個值
- 11. 如何比較兩個數組並找到最佳匹配?
- 12. 通過指針合併2個數組
- 13. 不通過合併多個數組
- 14. 通過數組篩選並找到拼接的索引
- 15. 如何在數組中找到未耦合的整數?
- 16. 用1個foreach搜索多維數組?
- 17. 如何通過樹搜索找到一組節點的值的最大和
- 18. Swift:通過兩個部分搜索欄搜索,而不是將它們組合
- 19. Api搜索組通過RT
- 20. 通過一組搜索
- 21. 通過其參數搜索和合並對象
- 22. 通過鍵構建JS數組 - 尋找最佳解決方案
- 23. 通過記錄數組搜索
- 24. 如何通過ransack gem搜索數組?
- 25. 如何找到最佳數組匹配
- 26. MySql查詢或合併到數組1
- 27. 合併2 PDF字節數組到1
- 28. PHP:通過兩個數組迭代,找到匹配,結合
- 29. 搜索最佳點搜索算法
- 30. 多個SQL搜索與通過一個返回數組進行搜索
難道你不能排序數組? – Toto 2011-05-17 15:13:54
那麼數字從1到100000和一個重複或什麼?或者什麼是*幾個數字*? – 2011-05-17 15:16:52
是的1 dublicate,對不起,我只是俄羅斯 - 壞Engl在所有=)就像我說過的我通過2種方法解決了這個任務,一個是通過數組做2個循環,一個一個比較,另一個是除以2並從開始/開始循環1-st,從結束到結束/實際上一半循環。 – 2011-05-17 15:44:22