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

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

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

剑指 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 <= nums.length <= 105
-109 <= nums[i] <= 109
nums 是一个非递减数组
-109 <= target <= 109

解题思路

1)遍历,暴力解法,这里不再赘述
2) 递归二分查找

class Solution {
    public static void main(String[] args) {
        System.out.println(search(new int[]{5, 7, 7, 8, 8, 10}, 8));
    }
    public static int search(int[] nums, int target) {
        return serachs(nums, 0, nums.length - 1, target);
    }

    public static int serachs(int[] nums, int left, int right, int target) {
        int ans = 0;
        if (left > right) {
            return ans;
        }
        int mid = (right + left) / 2;
        if (nums[mid] == target) {
            ans++;
            ans += serachs(nums, left, mid - 1, target);
            ans += serachs(nums, mid + 1, right, target);
        } else if (nums[mid] > target) {
            ans += serachs(nums, left, mid - 1, target);
        } else {
            ans += serachs(nums, mid + 1, right, target);
        }
        return ans;
    }
}
目录
相关文章
|
7月前
|
算法 C++
剑指offer(C++)-JZ3:数组中重复的数字(算法-排序)
剑指offer(C++)-JZ3:数组中重复的数字(算法-排序)
|
6天前
剑指 Offer 53 - I:在排序数组中查找数字 I
剑指 Offer 53 - I:在排序数组中查找数字 I
23 0
|
6天前
剑指 Offer 03:数组中重复的数字
剑指 Offer 03:数组中重复的数字
14 0
|
6天前
剑指 Offer 56 - II:数组中数字出现的次数 II
剑指 Offer 56 - II:数组中数字出现的次数 II
22 0
|
6天前
剑指 Offer 56 - I:数组中数字出现的次数
剑指 Offer 56 - I:数组中数字出现的次数
19 0
|
6天前
剑指Offer LeetCode 面试题53 - I. 在排序数组中查找数字 I
剑指Offer LeetCode 面试题53 - I. 在排序数组中查找数字 I
20 0
|
11月前
|
索引
剑指offer_数组---数组中重复的数字
剑指offer_数组---数组中重复的数字
33 0
|
11月前
剑指offer_数组---数字在排序数组中出现的次数
剑指offer_数组---数字在排序数组中出现的次数
32 0