LeetCode二分查找使用JavaScript破解|前端学算法

简介: LeetCode二分查找使用JavaScript破解|前端学算法

二分查找


给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

输入: nums = [-1,0,3,5,9,12], target = 9

输出: 4

解释: 9 出现在 nums 中并且下标为 4


解题思路


从数组中间的元素开始比较,如果中间的元素正好等于目标值,则搜索结束;如果目标值大于或小于中间的元素,则在大于或小于中间的元素的那一半继续搜索,然后重复进行比较,直到最后找到他


微信图片_20230107175015.png


  • 第一步: 定义查找的范围 [left,right],初始查找范围是整个数组。
  • 第二步:每次取查找范围的中点 mid,比较 nums[mid] 和 target的大小,如果相等则 mid即为要寻找的下标。
  • 第三步: 如果不相等则根据 nums[mid]和 target的大小关系将查找范围缩小一半
  • 第四步:继续从第一步开始重复执行
var search = function(nums, target) {
    // 在区间[left,right]中查找元素,左闭右闭
    let left = 0;
    let right = nums.length - 1;
    while (left <= right) {
      // 计算中间点
      let mid = parseInt(left + (right-left)/2);
      if (target == nums[mid]) {
        return mid;
        // 如果target < nums[mid],表示目标值可能在左半边
      } else if (target < nums[mid]){
        right = mid - 1;
        // 如果target > nums[mid],表示目标值可能在右半边
      } else if (target > nums[mid]){
        left = mid + 1;
      }
    }
    // 未找到返回-1
    return -1;
};


微信图片_20230107175053.png


知识点


  • parseInt(string, radix)解析一个字符串并返回指定基数的十进制整数,radix 是 2-36 之间的整数,表示被解析字符串的基数。
    当传入的radix 小于 2 或大于 36,会返回NaN


目录
相关文章
|
18天前
|
前端开发 JavaScript 网络协议
前端最常见的JS面试题大全
【4月更文挑战第3天】前端最常见的JS面试题大全
37 5
|
1月前
|
JavaScript 前端开发 Java
纯前端JS实现人脸识别眨眨眼张张嘴案例
纯前端JS实现人脸识别眨眨眼张张嘴案例
47 0
|
1月前
|
存储 算法 JavaScript
怎么刷算法,leetcode上有哪些经典题目
怎么刷算法,leetcode上有哪些经典题目
16 0
|
1月前
|
算法 Java
[Java·算法·中等] LeetCode15. 三数之和
[Java·算法·中等] LeetCode15. 三数之和
30 0
|
4天前
|
算法
代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
17 3
|
4天前
|
算法
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
9 3
|
4天前
|
算法
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
24 1
|
6天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
7天前
|
算法 前端开发
前端算法 岛屿的最大面积 DFS(深度优先搜索)
前端算法 岛屿的最大面积 DFS(深度优先搜索)
10 0
|
21天前
|
人工智能 前端开发 JavaScript
【前端设计】HTML+CSS+JavaScript基本特性
【前端设计】HTML+CSS+JavaScript基本特性

热门文章

最新文章