题解 | #数字在升序数组中出现的次数#
数字在升序数组中出现的次数
https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param k int整型 * @return int整型 */ int GetNumberOfK(vector<int>& nums, int k) { // write code here int len = nums.size(); int res_num = 0; int mid = len/2; //复杂度要求logn,所有不能整个一起遍历,要用二分查找 int i = 0; int j = len-1; int flag = -1; while(i<=j) { if(nums[mid]>k) { j = mid - 1; } else if(nums[mid]<k) { i = mid + 1; } else { flag = mid; break; } mid = (i+j)/2; } if(flag != -1) { for(int z = mid;z>=0;z--) { if(nums[z]==k) { res_num++; } } for(int z = mid+1;z<len;z++) { if(nums[z]==k) { res_num++; } } } return res_num; } };