胧(LeetCode 2)
LeetCode刷题记录
From[My Site]: https://mirrormoon.top/#/post/18
东风夜放花千树
更吹落
星如雨
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
let l = 0
let r = nums.length - 1
while(l <= r) {
let mid = (l + r) >> 1
if(nums[mid] === target) {
return mid
}
if(nums[mid] < target) {
l = mid + 1
}
if(nums[mid] > target) {
r = mid - 1
}
}
return -1
};
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
let l = 0
let r = nums.length - 1
while(l <= r) {
let mid = (l+r) >> 1
if(nums[mid] === target) {
return mid
}
if(nums[mid] > target) {
r = mid - 1
}
if(nums[mid] < target) {
l = mid + 1
}
}
// 不存在的情况
return l;
};
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var searchRange = function(nums, target) {
// 没找到
let result = new Array(2).fill(-1)
// 数组为空的情况
if(nums.length === 0) {
return result
}
let l = 0
let r = nums.length - 1
while(l <= r) {
let mid = (l+r) >> 1
if(nums[mid] === target) {
// 重复的情况
result[0] = mid
result[1] = mid
// 找右边
for(let j=mid+1; j<=nums.length-1; j++) {
if(nums[j] === target) {
result[1] = j
}else{
break
}
}
// 找左边
for(let k=mid-1; k>=0; k--) {
if(nums[k] === target) {
result[0] = k
}else{
break
}
}
break
}
if(nums[mid] > target) {
r = mid - 1
}
if(nums[mid] < target) {
l = mid + 1
}
}
return result
};

浙公网安备 33010602011771号