剑指 Offer 53 - I. 在排序数组中查找数字 I
题目链接:https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/
1.思路
暴力
class Solution {
public int search(int[] nums, int target) {
int count = 0;
for (int i = 0;i< nums.length;i++){
if (nums[i]==target) count++;
if (nums[i]>target) break;;
}
return count;
}
}
二分法
class Solution {
public int search(int[] nums, int target) {
int i = 0;
int j = nums.length-1;
while (i<=j){
int m = (i+j)/2;
if (nums[m]<=target) i = m+1;
if (nums[m]>target) j = m-1;
}
int right = i;
i = 0;
j = nums.length-1;
while (i<=j){
int m = (i+j)/2;
if (nums[m]<target) i = m+1;
if (nums[m]>=target) j = m-1;
}
int left = j;
return right - left - 1;
}
}