LeetCode 二分查找使用 JavaScript 解题, 前端学算法
有人相爱,有人夜里开车看海,我是 LeetCode 第一题都做不出来
二分查找这个算是一道十分经典的题目了,记得无论是 C 语言还是 Java 以及数据结构,都会讲这个
当我在 LeetCode 再次做它的时候,感觉立马就来了:我要做十道
二分查找
给定一个 n 个元素有序的(升序)整型数组 nums
和一个目标值 target
,写一个函数搜索 nums
中的 target
,如果目标值存在返回下标,否则返回 -1。
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
解题思路
从数组中间的元素开始比较,如果中间的元素正好等于目标值,则搜索结束;如果目标值大于或小于中间的元素,则在大于或小于中间的元素的那一半继续搜索,然后重复进行比较,直到最后找到他
第一步: 定义查找的范围 [left,right],初始查找范围是整个数组。
第二步:每次取查找范围的中点 mid,比较 nums[mid] 和 target 的大小,如果相等则 mid 即为要寻找的下标。
第三步: 如果不相等则根据 nums[mid]和 target 的大小关系将查找范围缩小一半
第四步:继续从第一步开始重复执行
复制代码
知识点
parseInt(string, radix)
解析一个字符串并返回指定基数的十进制整数,radix
是 2-36 之间的整数,表示被解析字符串的基数。当传入的
radix
小于 2 或大于 36,会返回NaN
版权声明: 本文为 InfoQ 作者【董员外】的原创文章。
原文链接:【http://xie.infoq.cn/article/80fcb3d514dd562c4668de037】。文章转载请联系作者。
评论