解题思路
通过二分中间值与目标值比较,若目标值小于中间值右指针移动,若大于则左指针移动,若相等则直接返回
代码
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
var left = 0;
var right = nums.length - 1;
while(left<=right){
var mid = left+Math.floor((right-left)/2);
if(nums[mid] >target){
right = mid-1;
}
else if(nums[mid] < target){
left = mid+1;
}
else{
return mid
}
}
return -1;
};
704.二分查找
27.移除元素
解题思路: 定义快慢两个指针,快指针移动,循环条件为数组长度,如果快指针对应的数值等于目标值,则继续向下移动,若对应数值不为目标值,则将慢指针移动到快指针的位置,并赋值,最后返回
var removeElement = function(nums, val) {
let left = 0, right = 0;
let len = nums.length
for(;right<len; right++){
if(val != nums[right])[
nums[left++] = nums[right]
]
}
return left
};