在排序数组中查找数字 I

题目:

统计一个数字在排序数组中出现的次数。

示例:

输入: nums = [5,7,7,8,8,10], target = 8
输出: 2

解题方法:

因为是排序数组,所以可以使用二分查找,二分法每次写起来都是各种奇奇怪怪的问题,这次也不太顺利,还是得多练练。这道题的主要思路就是:

  1. 二分法找target对应的数组索引;
  2. 判断二分法得到索引对应的数字是否等于target;如果等于,就从该索引向左右两侧遍历,找到所有等于target的数;如果不等于,说明数组里面没有数字等于target。

代码和结果:

class Solution {
public:
    int search(vector& nums, int target) {
        if(nums.size()==0)
            return 0;
        int begin=0;
        int end=nums.size();
        int mid=0;
        while(begintarget)
                end=mid;
            else
                begin=mid+1;
        }

        int cnt=0;
        if(nums[mid]==target)
        {
            int i=mid-1;
            while(i>=0)
            {
                if(nums[i]==target)
                    cnt++;
                else
                    break;
                i--;
            }  
            i=mid+1; 
            while(i

运行结果:

原题链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/

你可能感兴趣的:(在排序数组中查找数字 I)