iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
佛心分享-IT 人自學之術

從Leetcode到實務的橋樑系列 第 20

Day20(33.Search in Rotated Sorted Array)

  • 分享至 

  • xImage
  •  

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

2.時間序列異常偵測:分析旋轉或偏移的時間序列資料,找出異常事件發生的位置。

3.資源排程與調度:在部分有序的任務或資源列表中,快速找到最符合條件的項目,提升決策效率。


上一篇
Day19(16.3Sum Closest)
下一篇
Day21(12. Integer to Roman)
系列文
從Leetcode到實務的橋樑21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言