欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

剑指offer之在排序数组中查找数字 I(C++/Java双重实现)

程序员文章站 2022-10-03 18:09:27
1.题目描述剑指 Offer 53 - I. 在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0限制:0 <= 数组长度 <= 500002.问题分析其实就是一个向左边界的二分查找,然后在往后遍历累加target在数组中个数的过程3.代码实现3.1C++代码cla...

1.题目描述

剑指 Offer 53 - I. 在排序数组中查找数字 I
统计一个数字在排序数组中出现的次数。
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
示例 2:
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
限制:
0 <= 数组长度 <= 50000

2.问题分析

其实就是一个向左边界的二分查找,然后在往后遍历累加target在数组中个数的过程

3.代码实现

3.1C++代码

class Solution {
public:
    int search(vector<int>& nums, int target) {
        if(nums.empty())
        return 0;
        int left=0;
        int right=nums.size()-1;
        int mid;
        while(left<=right)
        {
            mid=left+(right-left)/2;
            if(nums[mid]<target)
            left=mid+1;
            else
            right=mid-1;        
        }
        if(left>=nums.size()||nums[left]!=target)
        return 0;
        else
        {
            int cnt=1;
            while(1)
            {
                left++;
                if(left<nums.size()&&target==nums[left])
                cnt++;
                else
                break;
            }
            return cnt;
        }
    }
};

3.2Java代码

class Solution {
    public int search(int[] nums, int target) {
         if(nums.length==0)
        return 0;
        int left=0;
        int right=nums.length-1;
        int mid;
        while(left<=right)
        {
            mid=left+(right-left)/2;
            if(nums[mid]<target)
            left=mid+1;
            else
            right=mid-1;        
        }
        if(left>=nums.length||nums[left]!=target)
        return 0;
        else
        {
            int cnt=1;
            while(true)
            {
                left++;
                if(left<nums.length&&target==nums[left])
                cnt++;
                else
                break;
            }
            return cnt;
        }
    }

    };

本文地址:https://blog.csdn.net/qq_45737068/article/details/107486421

相关标签: 剑指Offer