题解 | #数字在升序数组中出现的次数#
数字在升序数组中出现的次数
https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2
import java.util.*; public class Solution { /** * 解题思路:由于都是整数,找k+0.5时,left指针一定是指向比k大的下一个数,rigth指针 * 一定是指向K的右边界。找k-0.5时,left指向指向k的左边界,right指向比k 小的上一个数。因此left-left 或者right-right 都可以得到结果 * * @param nums int整型一维数组 * @param k int整型 * @return int整型 */ public int GetNumberOfK (int[] nums, int k) { // k+0.5 应该出现的位置和 k-0.5应该出现的位置 return bisearch(nums,k+0.5) - bisearch(nums,k-0.5); } private int bisearch(int[] data,double k){ int left =0; int right = data.length-1; while(left <= right){ int mid = (left+right) / 2; if(data[mid]<k){ left = mid+1; }else if(data[mid]>k){ right = mid -1; } } return right; } }