一、题目内容
二、题解
解法1:
思路
二分法,找到目标值后判定,继续向左还是向右
代码
public class Solution { public static int findLen(int[] nums, int target) { if (nums == null || nums.length == 0) { return 0; } int left = find(nums, target, true); int right = find(nums, target, false); return right - left; } private static int find(int[] nums, int target, boolean leftFlag) { int left = 0, right = nums.length - 1; while (left < right) { int mid = (right + left) / 2; if (nums[mid] < target) { left = mid + 1; } else if (nums[mid] > target) { right = mid - 1; } else { //求左还是求右 if (leftFlag) { right = mid - 1; } else { left = mid + 1; } } } return left; }}