leetcode二分法

二分法

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

你必须编写一个具有 O(log n) 时间复杂度的算法。

讲解:

有序整型数组,去找到一个目标值,就可以考虑使用二分法。这里要考虑左闭右闭区间和左闭右开区间。

这里只说一下左闭右闭区间 [1,1]

这里的left是可以等于right的,二分法的思路就是每次取中间值mid,然后去和target进行比较,如果当前中间值小于target,那么我们就把mid+1的值赋值给left;反之,那么我们就把mid-1的值赋值给right。

复制代码
/**`
` * @param {number[]} nums`
` * @param {number} target`
` * @return {number}`
` */`
`var` `search` `=` `function(nums, target)` `{`
    `let left =` `0;`
    `let right = nums.length-1`
    `while(nums[left]` `<= nums[right]){`
        `let mid = Math.ceil((left + right)` `/` `2);`
        `if(nums[mid]` `< target){`
`            left = mid +` `1`
        `}` `else` `if(nums[mid]` `> target)` `{`
`            right = mid -1`
        `}` `else` `{`
            `return mid`
        `}`
    `}`
     `return` `-1`
`};`
`
相关推荐
m0_7369191011 分钟前
C++中的委托构造函数
开发语言·c++·算法
小小小小王王王16 分钟前
洛谷-P1886 【模板】单调队列 / 滑动窗口
c++·算法
PPPPPaPeR.43 分钟前
光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)
开发语言·python·数码相机·算法
看我干嘛!1 小时前
python第五次作业
算法
历程里程碑1 小时前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Sheep Shaun1 小时前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制
Pluchon1 小时前
硅基计划4.0 简单模拟实现AVL树&红黑树
java·数据结构·算法
生锈的键盘1 小时前
推荐算法实践:交叉特征的理解
算法
小龙报1 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
dllxhcjla1 小时前
数据结构和算法
数据结构