思路:使用二分查找。
C 代码:
int search(int* nums, int numsSize, int target) {
int left = 0, right = numsSize - 1;
int mid = (left + right) / 2;
while (left <= right) {
if (target < nums[mid]) {
right = mid - 1;
mid = (left + right) / 2;
} else if (target > nums[mid]) {
left = mid + 1;
mid = (left + right) / 2;
} else {
return mid;
}
}
return -1;
}
改进之后的 C 代码:
int search(int* nums, int numsSize, int target) {
int left = 0, right = numsSize - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (target < nums[mid]) {
right = mid - 1;
} else if (target > nums[mid]) {
left = mid + 1;
} else {
return mid;
}
}
return -1;
}
Java 代码:
class Solution {
public int search(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (target > nums[mid]) {
left = mid + 1;
} else if (target < nums[mid]) {
right = mid - 1;
} else {
return mid;
}
}
return -1;
}
}