Description
面试题53 - I. 在排序数组中查找数字 I
难度简单
统计一个数字在排序数组中出现的次数。
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
示例 2:
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
限制:0 <= 数组长度 <= 50000
Solution
利用二分查找的变种,查找第一个等于给定值的元素。
class Solution {public int search(int[] nums, int target) {int lo = 0, hi = nums.length-1, mid=0;while(lo <= hi){mid = lo + (hi - lo) / 2;if(nums[mid] > target){hi = mid - 1;}else if (nums[mid] < target){lo = mid + 1;}else{if(mid == 0 || nums[mid - 1] != target)break;elsehi = mid - 1;}}int res = 0;while(mid < nums.length && nums[mid++] == target)res ++;return res;}}
执行结果
执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗 :43 MB, 在所有 Java 提交中击败了100.00%的用户
