二分查找与移除元素(JavaScript语言实现)

二分查找与移除元素(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/

你可能感兴趣的:(算法,leetcode,算法,职场和发展)