leetcode : Find First and Last Position of Element in Sorted Array
runtime 4 ms, beats 97.07% of cpp submissions
O(log(n)) solution with explanation
tags: binary search
🔗 link
Find First and Last Position of Element in Sorted Array
📖 description
給定一個 sorted array nums ,找到 target 元素出現的頭跟尾,邀求時間複雜度為 *O(log(n))*。
ex. nums = [5, 7, 7, 8, 8, 10] target = 8 元素 8 在 nums 出現的區間是 [3,4] nums = [5, 7, 7, 7, 8, 9, 9] target = 7 元素 7 在 nums 出現的區間是 [1,3]
🧠 solution
使用兩次 binary search 找下限與上限,尋找上限時可以透過把找到的下陷當成 l 來檢少運算。
也可以先使用 binary search 找到其中一個符合 target 的數值後,針對左右 linear search 上下限,但這樣做的 worst case 是 O(n) ,因為有可能整個陣列都是同一個數字。
⏳ time complexity
兩次 binary search 的時間複雜度為 O(log(n))
總時間複雜度 O(log(n))
📝 code
1 | class Solution { |