題目介紹:
給定一個升序排序後旋轉的整數陣列 nums 和目標值 target,要求找出目標值的索引,若不存在則返回 -1。陣列中元素唯一,需在 O(log n) 時間內完成搜尋。解題核心是利用二分搜尋,先判斷陣列哪一段是有序,再判斷目標值是否位於有序段內,決定向左或向右繼續搜尋,直到找到目標或確認不存在。
解題流程:
使用二分搜尋,先判斷中點哪一側有序,再判斷目標是否在有序區間內,若在則縮小搜尋範圍至該區,否則搜尋另一側,直到找到目標或返回 -1。
程式碼及執行結果截圖:
學習心得:
這題讓我體會到二分搜尋在非典型有序資料中的應用。旋轉排序陣列雖然整體不是完全升序,但仍保有部分有序特性,透過判斷哪一段是有序的,就能有效縮小搜尋範圍。解題過程中,我學會了條件分支與邏輯分析結合演算法的重要性,每一步都需要仔細思考目標是否位於有序區間內,才能正確更新左右指標。此外,這題也強化了我在面對「不完全結構化資料」時的策略思維,讓我能將問題拆解成可操作步驟。這種思路不僅適用於程式問題,也可延伸到現實生活,例如快速定位資料庫資料、分析時間序列或排查系統異常。
延伸邏輯時事面:
1.資料庫快速檢索:在大量資料中快速定位目標值,提高查詢效率。
2.時間序列異常偵測:分析旋轉或偏移的時間序列資料,找出異常事件發生的位置。
3.資源排程與調度:在部分有序的任務或資源列表中,快速找到最符合條件的項目,提升決策效率。