package com.heu.wsq.leetcode.inoffer;
/**
* 剑指 Offer 53 - I. 在排序数组中查找数字 I
* @author wsq
* @date 2021/4/24
* 统计一个数字在排序数组中出现的次数。
*
* 示例 1:
* 输入: nums = [5,7,7,8,8,10], target = 8
* 输出: 2
*
* 示例 2:
* 输入: nums = [5,7,7,8,8,10], target = 6
* 输出: 0
*
* 链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof
*/
public class Offer53 {
private int target;
public int search(int[] nums, int target) {
if(nums == null || nums.length == 0){
return 0;
}
this.target = target;
int left = 0;
int right = nums.length - 1;
int count = search(nums, left, right);
return count;
}
/**
* 递归的方式实现二分查找
* @param nums
* @param left
* @param right
* @return
*/
public int search(int[] nums, int left, int right){
if(left > right){
return 0;
}
int count = 0;
int mid = (left + right) >> 1;
if(nums[mid] == this.target){
count++;
count += search(nums, left, mid - 1);
count += search(nums, mid + 1, right);
}else if(nums[mid] < this.target){
count += search(nums, mid + 1, right);
}else{
count += search(nums, left, mid - 1);
}
return count;
}
}
剑指 Offer 53 - I. 在排序数组中查找数字 I(二分查找)
最新推荐文章于 2025-11-24 01:23:29 发布
该博客介绍了一个在排序数组中统计特定数字出现次数的方法。通过递归实现二分查找,找到目标数字并计算其出现的频率。示例展示了如何在给定的排序数组中查找数字8和6,并返回它们的出现次数。
309

被折叠的 条评论
为什么被折叠?



