且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

LeetCode——剑指 Offer 53 - I【 在排序数组中查找数字 I】

更新时间:2021-09-28 02:21:25

目录

题目

解题思路

代码详解


题目

剑指 Offer 53 - I. 在排序数组中查找数字 I

题目概述

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

示例

LeetCode——剑指 Offer 53 - I【 在排序数组中查找数字 I】

基础框架

class Solution {
    public int search(int[] nums, int target) {
 
    }
}

解题思路

①for循环直接遍历即可!

②由于数组有序,用二分法,先查找第一个元素出现的位置,往后记数即可!

代码详解

  class Solution {
    public int search(int[] nums, int target) {
        int sum=0;
        if (nums.length == 0) {
            return 0;
        }
        for(int i=0;i<nums.length;i++){
            if(nums[i]==target){
                sum++;
            }
        }
        return sum;
    }
}

LeetCode——剑指 Offer 53 - I【 在排序数组中查找数字 I】

 优秀题解

//二分法
class Solution {
    public int search(int[] nums, int target) {
        int left=0;
        int right=nums.length-1;
        int count=0;
        while(left<right){
            int mid=left+(right-left)/2;
            if(nums[mid]>=target){
                right=mid;
            }else{
                left=mid+1;
            }
        }
        while(left<nums.length&&nums[left++]==target){
            count++;
        }
        return count;
    }
}

LeetCode——剑指 Offer 53 - I【 在排序数组中查找数字 I】