iT邦幫忙

2025 iThome 鐵人賽

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

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

Day29(34. Find First and Last Position of Element in Sorted Array)

  • 分享至 

  • xImage
  •  

題目介紹:
給定一個已排序的整數陣列 nums,以及一個目標值 target,請找出該目標值在陣列中第一次出現與最後一次出現的位置。如果陣列中不存在該目標值,請回傳 [-1, -1]。
解題流程:
1.陣列已排序 → 可以使用二分搜尋
2.需要找左邊界與右邊界
3.分別用兩次二分搜尋可達到 O(log n) 時間複雜度
4.找左邊界時,找到 target 後繼續往左移動(right = mid - 1)
5.找右邊界時,找到 target 後繼續往右移動(left = mid + 1)
6.若 target 不存在 → 回傳 [-1, -1],若找到 → 回傳 [leftBound, rightBound]
程式碼及執行結果截圖:
https://ithelp.ithome.com.tw/upload/images/20251007/20168871NhMF27Cijq.png
學習心得:
這題雖然表面上看似要找一個數的位置,但其實核心在於如何精準找到左邊界與右邊界。剛開始我嘗試用線性搜尋,但時間複雜度為 O(n),對大資料不適用。後來透過兩次二分搜尋分別找左、右邊界,不僅效率大幅提升,也讓我理解到二分搜尋不只是找單一目標值,還可以用來尋找邊界條件。這題強化了我對邏輯判斷的思考能力,也提醒我在面對排序資料時,應善用排序特性來設計高效演算法。
延伸邏輯時事面:
1.搜尋引擎與資料庫優化:
左右邊界搜尋概念類似資料庫索引或搜尋引擎在大量排序資料中快速定位範圍結果,對現代大數據檢索至關重要。

2.股市與金融資料分析:
在時間序列或排序交易資料中,快速找出特定價格的首尾位置,可應用於高頻交易或技術分析中,減少運算延遲。

3.機器學習與事件檢測:
在已排序的事件或時間戳資料中定位目標範圍,可用於異常檢測或分段統計,與即時監控系統及 AI 預測模型相呼應。


上一篇
Day28(89. Gray Code)
下一篇
Day30 學習心得分享
系列文
從Leetcode到實務的橋樑30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言