704.二分查找
做题思路:
1.要注意先确定二分的区间,这里是 [ left, right ] 两边闭合
2.因为left = right 在 [ left, right ] 中是有意义的,所以二分法的循环判断条件应当是 left <= right
class Solution { public: int search(vector<int>& nums, int target) { int left = 0, right = nums.size() - 1;//左右两个指针 while (left <= right) { //这里注意,left = right是有意义的!所以二分法的条件应当是 left <= right int middle = left + ((right - left) / 2); //中间指针 if (nums[middle] > target) { right = middle - 1; //这里不用取middle,直接取middle - 1,因为这个时候已经知道middle是不符合条件的了,所以直接往符合条件的区间靠就好 } else if (nums[middle] < target) { left = middle + 1; } else { return middle; } } return -1; //倘若上面的条件都没有让 num[middle] == target,则寄 } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端