📅  最后修改于: 2023-12-03 15:28:45.750000             🧑  作者: Mango
给定一个长度为n的数组arr和一个数字x,找到最小的下标i,使得arr[i]的值等于x。下标i满足0 <= i < n。
请注意,如果x在arr中不出现,则返回-1。
实现函数int findElement(int arr[], int n, int x)。
返回最小的下标i,使得arr[i]的值等于x。如果x在arr中不出现,则返回-1。
arr = [1, 2, 3, 4, 5, 6]
x = 3
2
arr = [1, 2, 3, 4, 5, 6]
x = 7
-1
此题可以用二分查找的方式来解决。先将数组排序,然后再进行二分查找,找到第一个等于x的元素下标即可。
时间复杂度为O(logn)。
代码如下:
int findElement(int arr[], int n, int x){
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] > x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}