LeetCode 剑指Offer 53 - I 在排序数组中查找数字I[二分法] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 剑指Offer 53 - I 在排序数组中查找数字I[二分法] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
标准的二分法题目,千万不要暴力遍历,那样很容易超时,在本题中,二分遍历找到目标target的一个位置,然后再左右遍历,找出所有target即可,如果没有的话返回0,代码如下:
class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
int mid;
while(left <= right) {
mid = (left + right) / 2;
if(nums[mid] == target) {
break;
}
if(nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
int num = 0;
int leftIndex = mid, rightIndex = mid + 1;
while(1) {
if(leftIndex >= 0 && nums[leftIndex] == target) {
num ++;
leftIndex --;
} else {
break;
}
}
while(1) {
if(rightIndex < nums.size() && nums[rightIndex] == target) {
num ++;
rightIndex ++;
} else {
break;
}
}
return num;
}
};
以上是关于LeetCode 剑指Offer 53 - I 在排序数组中查找数字I[二分法] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode(剑指 Offer)- 53 - I. 在排序数组中查找数字 I
LeetCode 剑指Offer 53 - I 在排序数组中查找数字I[二分法] HERODING的LeetCode之路