✅ Binary Search Approach
⚬ Create a function that takes a sorted array & target, and returns [first_index, last_index].
⚬ Init result: [-1, -1]. Left=0, Right=len(arr)-1.
⚬ Find First Occurrence:
While left <= right:
mid = (left right) // 2
If arr[mid] == target: result[0] = mid; right = mid - 1 (search left).
Elif arr[mid] < target: left = mid 1.
Else: right = mid - 1.
⚬ Find Last Occurrence: Reset left=0, right=len(arr)-1.
While left <= right:
mid = (left right) // 2
If arr[mid] == target: result[1] = mid; left = mid 1 (search right).
Elif arr[mid] < target: left = mid 1.
Else: right = mid - 1.
⚬ Return result.
⏳Time Complexity: O(log n) – Halves the search space each step.
💾 Space Complexity: O(1) – Constant extra space.