代码随想录算法训练营第一天| javascript |二分查找_LeetCode704, 移除元素_LeetCode27
二分查找
核心在于边界值的确定
左闭右闭区间
//实现左闭右闭区间的写法
```
var search = function(nums, target) {
let left = 0;
let right = nums.length - 1;
while (left <= right) {
let mid = 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;
};
```
左闭右开区间
//实现左闭右开区间的写法
var search = function(nums, target) {
let left = 0;
let right = nums.length;//右边界本身是取不到的,所以下标我们这里设置为nums.length
while (left < right) {
let mid = Math.floor((right + left) / 2)
if(nums[mid] > target) {
right = mid;//左区间查找
}else if(nums[mid] < target) {
left = mid + 1;//右区间查找
}else{
return mid;
}
}
return -1;
};
移除元素
题目链接:https://leetcode.cn/problems/remove-element/
文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html
视频讲解:https://www.bilibili.com/video/BV12A4y1Z7LP
javascript中本身没有双指针的概念,实现移除元素比较简单,就是常说的数组去重
var removeElement = function(nums, val) {
let k = 0;
for(let i = 0; i < nums.length; i++) {
if(nums[i] !== val) {
nums[k++] = nums[i]
}
}
return k;
};

浙公网安备 33010602011771号