查找第一个值等于给定值的元素
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
}
}
}