Skip to content

Commit cc55b1f

Browse files
author
rahini
committed
fix binary search to handle duplicates correctly
1 parent ae68a78 commit cc55b1f

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def binary_search_first_occurrence(arr, target):
2+
left, right = 0, len(arr) - 1
3+
result = -1
4+
while left <= right:
5+
mid = (left + right) // 2
6+
if arr[mid] == target:
7+
result = mid
8+
right = mid - 1 # keep searching left
9+
elif arr[mid] < target:
10+
left = mid + 1
11+
else:
12+
right = mid - 1
13+
return result
14+
15+
if __name__ == "__main__":
16+
arr = [1, 2, 4, 4, 4, 5, 6]
17+
target = 4
18+
print(binary_search_first_occurrence(arr, target)) # Expected output: 2

0 commit comments

Comments
 (0)