package com.daily.daily20210129;
/**
* @Project: dailyCode
* @Site: http://www.zhao1iang.club/
* @Copyright: ©CodeLamp
* @Author: zhaoliang
* @Create: 2021-01-29 16:26
* @Desc: 数字在升数组中出现的次数
**/
public class GetNumberOfK {
//统计一个数字在升序数组中出现的次数。
public int GetNumberOfK(int[] nums,int target){
int first = helper(nums,target);
int last = helper(nums,target+1);
return (first == nums.length || nums[first]!=target)?0:last-first;
}
private int helper(int[] nums, int target) {
//二分法查找
int left =0;
int right = nums.length;
while (left < right){
int mid = left + (right-left)/2;
if(nums[mid] >=target){
right = mid;
}else {
left = mid+1;
}
}
return left;
}
}
日常刷题-数字在升数组中出现的次数
最新推荐文章于 2024-04-26 09:02:35 发布