本文共 1413 字,大约阅读时间需要 4 分钟。
题目描述
统计一个数字在排序数组中出现的次数。示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2 示例 2:输入: nums = [5,7,7,8,8,10], target = 6
输出: 0限制:
0 <= 数组长度 <= 50000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。Java
二分查找找第一个; 二分查找找最后一个;class Solution { public int search(int[] nums, int target) { int res=0; if(nums!=null && nums.length>0){ int first=getFirst(nums,target,0,nums.length-1); int last=getLast(nums,target,0,nums.length-1); if(first>-1 && last>-1) res=last-first+1; } return res; } //二分查找找第一个 public int getFirst(int [] a, int target,int start,int end){ if(start>end) return -1; int mid=start+(end-start)/2; if(a[mid]==target){ if((mid>0 && a[mid-1]!=target)|| mid==0) return mid; else end=mid-1; }else if(a[mid]>target){ end=mid-1; }else if(a[mid]end) return -1; int mid=start+(end-start)/2; if(a[mid]==target){ if((mid< a.length-1 && a[mid+1]!=target)|| mid==a.length-1) return mid; else start=mid+1; }else if(a[mid]>target){ end=mid-1; }else if(a[mid]