解决哪类问题
:::success 线性数组查找指定元素/元素坐标 :::
代码模板
简单版
int bs(int[] arr, int l, int r, int target) { // 找到最靠近target且>=target的indexwhile (l < r) {int mid = (r - l) / 2 + l;if (arr[mid] < target) {l = mid + 1;} else {r = mid;}}return l;}
完整版
int findBoundary(int[] nums, int target, int direction) {int left = 0, right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] < target) {// 更新leftleft = mid + 1;} else if (nums[mid] > target) {// 更新rightright = mid - 1;} else if (nums[mid] == target) {if (direction == 0) {// 找左边界,收缩右边界right = mid - 1;} else {// 找右边界,收缩左边界left = mid + 1;}}}if (direction == 0) {if (left >= nums.length || nums[left] != target)return -1;return left;} else {if (right < 0 || nums[right] != target)return -1;return right;}}
