二分查找与移除元素(JavaScript语言实现)
算法学习第一天
二分查找
leetcode题目链接:
https://leetcode-cn.com/problems/binary-search/
题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
var search = function(nums, target) {
let left = 0, right = nums.length - 1;
// 使用左闭右闭区间
while(left <= right) {
let mid = left + Math.floor((right - left)/2); //调用Math。floor,对其向下取整
if (nums[mid] > target) {
right = mid - 1;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
return mid;
}
}
return -1;
}
解题思路:二分查找,也就是从已排序数组的中间开始查询,查询值比它大则往右,反之则往左。
移除元素
LeetCode题目链接:
https://leetcode-cn.com/problems/remove-element/
var removeElement = function(nums, val) {
let len = nums.length;
for(i = 0; i < len; i++) {
if(nums[i] == val) {
for(j = i + 1; j < len; j++) {
nums[j - 1] = nums[j];
}
i--;
len--;
}
return len;
}
解题思路:刚开始不会,直接暴力破解上手了。
个人博客同步链接:https://exmaterial.gitee.io/