704. 二分查找
一、题目
给定一个 n
个元素有序的(升序)整型数组 nums
和一个目标值 target
,写一个函数搜索 nums
中的 target
,如果目标值存在返回下标,否则返回 -1
。
二、思路
二分查找
注意考虑大小为1之类,所以开头是要可以left=right,这样就考虑了left和right,所以在mid!=target时,就可以不把mid纳入到考虑范围,也就是left=mid+1,right=mid-1
三、代码
class Solution: def search(self, nums: List[int], target: int) -> int: left, right = 0, len(nums) - 1 while left <= right: mid = (right - left) // 2 + left num = nums[mid] if num == target: return mid elif num > target: right = mid - 1 else: left = mid + 1 return -1
四、分析
-
时间复杂度:O(logn),其中n是数组的长度。
-
空间复杂度:O(1)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了