查找第一个值等于给定值的元素
function searchFirstEqualElement(nums, target) { let len = nums.length let low = 0 let high = len - 1 while(low < high) { let mid = low + ((high - low) >> 1) if(nums[mid] > target) { high = mid - 1 } else if(nums[mid] < target) { low = mid + 1 } else { if(mid === 0 || nums[mid - 1] !== target) { return mid } high = mid - 1 } }}
查找最后一个值等于给定值的元素
function searchLastEuqalElement(nums, target) { let len = nums.length let low = 0 let high = len - 1 while(low < high) { let mid = low + ((high - low) >> 1) if(nums[mid] > target) { high = mid - 1 } else if (nums[mid] < target) { low = mid + 1 } else { if(mid === len - 1 || nums[mid + 1] !== target) { return mid } low = mid + 1 } }}
查找第一个大于等于给定值的元素
function searchFirstGreaterElement(nums, target) { let len = nums.length let low = 0 let high = len - 1 while(low <= high) { let mid = low + ((high - low) >> 1) if(nums[mid] >= target) { if(mid === 0 && nums[mid - 1] < target) { return mid } high = mid - 1 } else { low = mid + 1 } }}
查找最后一个小于等于给定值的元素
function searchLastLessElement(nums, target) { let len = nums.length let low = 0 let high = len - 1 while(low <= high) { let mid = low + ((high - low) >> 1) if(nums[mid] <= target) { if(mid === len - 1 || nums[mid + 1] > target) { return mid } low = mid + 1 } else { high = mid - 1 } }}