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

法一:循环法

  1. class Solution {
  2. public int search(int[] nums, int target) {
  3. int res = 0;
  4. for(int i = 0;i<nums.length;i++){
  5. if(nums[i]==target){
  6. res++;
  7. }
  8. }
  9. return res;
  10. }
  11. }

法二:二分法

因为是有序的,所以通过俩侧找边界来解决。

  1. class Solution {
  2. public int search(int[] nums, int target) {
  3. return helper(nums, target) - helper(nums, target - 1);
  4. }
  5. int helper(int[] nums, int tar) {
  6. int i = 0, j = nums.length - 1;
  7. while(i <= j) {
  8. int m = (i + j) / 2;
  9. if(nums[m] <= tar) i = m + 1;
  10. else j = m - 1;
  11. }
  12. return i;
  13. }