0
点赞
收藏
分享

微信扫一扫

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

岛上码农 2021-09-21 阅读 83
今日算法
题目描述:
示例 1:
示例 2:
题目分析:
  1. 数组是有序的
  2. 要统计target在数组中出现的次数
思路一:
代码实现:
class Solution {
    public int search(int[] nums, int target) {
        int len = nums.length;
        int count = 0;
        for (int i = 0; i < len; i++) {
            if (nums[i] == target) {
                count++;
            }
        }
        return count;
    }
}
思路二:
代码实现:
class Solution {
    public int search(int[] nums, int target) {
        int len = nums.length;
        if (len == 0) {
            return 0;
        }
        int left = binarySearch(nums, target);
        if (nums[left] != target) {
            return 0;
        }
        int mark = 0;
        for (int i = left; i < nums.length; i++) {
            if (nums[i] == target) {
                mark++;
            }
        }
        return mark;
    }

    public int binarySearch(int[] arr, int target) {
        int low = 0, high = arr.length - 1;
        while (low < high) {
            int mid = (high - low) / 2 + low;
            if (arr[mid] < target) {
                low = mid + 1;
            } else {
                high = mid;
            }
        }
        return low;
    }
}
举报

相关推荐

0 条评论