|
| 1 | +# |
| 2 | +# Find last occurance of a number in a sorted array (increasing order) |
| 3 | +# Approach- Binary Search |
| 4 | +# T(n)- O(log n) |
| 5 | +# |
| 6 | + |
| 7 | + |
1 | 8 | def lastOccurance(array, query): |
2 | 9 | lo, hi = 0, len(array) - 1 |
3 | 10 | while lo <= hi: |
4 | 11 | mid = lo + (hi - lo) // 2 |
5 | 12 | if (array[mid] == query and mid == len(array)-1) or \ |
6 | 13 | (array[mid] == query and array[mid+1] > query): |
7 | | - return mid |
| 14 | + return mid |
8 | 15 | elif (array[mid] <= query): |
9 | 16 | lo = mid + 1 |
10 | 17 | else: |
11 | 18 | hi = mid - 1 |
12 | 19 |
|
13 | 20 |
|
14 | | -array = [1,2,3,3,3,3,4,4,4,4,5,6,6,6] |
15 | | -print(array) |
16 | | -print("-----SEARCH-----") |
17 | | -query = 3 |
18 | | -print("found last: ", query, " in index:" , lastOccurance(array, query)) |
19 | | -print("-----SEARCH-----") |
20 | | -query = 5 |
21 | | -print("found last: ", query, " in index:" , lastOccurance(array, query)) |
22 | | -print("-----SEARCH-----") |
23 | | -query = 7 |
24 | | -print("found last: ", query, " in index:" , lastOccurance(array, query)) |
25 | | -print("-----SEARCH-----") |
26 | | -query = 1 |
27 | | -print("found last: ", query, " in index:" , lastOccurance(array, query)) |
28 | | -print("-----SEARCH-----") |
29 | | -query = -1 |
30 | | -print("found last: ", query, " in index:" , lastOccurance(array, query)) |
31 | | -print("-----SEARCH-----") |
32 | | -query = 9 |
33 | | -print("found last: ", query, " in index:" , lastOccurance(array, query)) |
34 | | -print("-----SEARCH-----") |
35 | | -query = 6 |
36 | | -print("found last: ", query, " in index:" , lastOccurance(array, query)) |
| 21 | +def main(): |
| 22 | + array = [1, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 6, 6, 6] |
| 23 | + print(array) |
| 24 | + print("-----SEARCH-----") |
| 25 | + query = 3 |
| 26 | + print("found last: ", query, " in index:", lastOccurance(array, query)) |
| 27 | + print("-----SEARCH-----") |
| 28 | + query = 5 |
| 29 | + print("found last: ", query, " in index:", lastOccurance(array, query)) |
| 30 | + print("-----SEARCH-----") |
| 31 | + query = 7 |
| 32 | + print("found last: ", query, " in index:", lastOccurance(array, query)) |
| 33 | + print("-----SEARCH-----") |
| 34 | + query = 1 |
| 35 | + print("found last: ", query, " in index:", lastOccurance(array, query)) |
| 36 | + print("-----SEARCH-----") |
| 37 | + query = -1 |
| 38 | + print("found last: ", query, " in index:", lastOccurance(array, query)) |
| 39 | + print("-----SEARCH-----") |
| 40 | + query = 9 |
| 41 | + print("found last: ", query, " in index:", lastOccurance(array, query)) |
| 42 | + print("-----SEARCH-----") |
| 43 | + query = 6 |
| 44 | + print("found last: ", query, " in index:", lastOccurance(array, query)) |
| 45 | + |
| 46 | +if __name__ == "__main__": |
| 47 | + main() |
0 commit comments