原题链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/
题意: 统计一个数字在排序数组中出现的次数。
方法一:简单的判断逻辑
class Solution {
public:
int search(vector<int>& nums, int target) {
int num = 0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]==target) num++;
}
return num;
}
};
方法二:由于是有序数组,利用lower_bound,找到第一个小于等于target+1的位置,和第一个小于等于target的位置,两个位置相减,就能得到次数,lower_bound的底层实现是二分查找
class Solution {
public:
int search(vector<int>& nums, int target) {
return lower_bound(nums.begin(),nums.end(),target+1)-lower_bound(nums.begin(),nums.end(),target);
}
};