二分查找等于target、第一个小于等于target、第一个大于等于target的值
1 class Solution { 2 public: 3 // 查找第一个小于等于target的值 4 int binarySearch1(vector<int> vec, int target) { 5 int left = 0; 6 int right = vec.size() - 1; 7 while (left <= right) { 8 int mid = left + (right - left) / 2; 9 if (vec[mid] > target) { // 目标值可能在区间[left, mid] 10 right = mid - 1; 11 } else { // 目标值可能在区间[mid, right] 12 left = mid + 1; 13 } 14 } 15 return right; 16 } 17 // 查找第一个大于等于target的值 18 int binarySearch2(vector<int> vec, int target) { 19 int left = 0; 20 int right = vec.size() - 1; 21 while (left <= right) { 22 int mid = left + (right - left) / 2; 23 if (vec[mid] < target) { // 目标值可能在区间[mid, right] 24 left = mid + 1; 25 } else { // 目标值可能在区间[left mid] 26 right = mid - 1; 27 } 28 } 29 return right; 30 } 31 // 查找等于target的值 32 int binarySearch3(vector<int> vec, int target) { 33 int left = 0; 34 int right = vec.size() - 1; 35 while (left <= right) { 36 int mid = left + (right - left) / 2; 37 if (vec[mid] == target) { 38 return mid; 39 } else if (vec[mid] > target) { // 目标值可能在区间[left, mid] 40 right = mid - 1; 41 } else { // 目标值可能在区间[mid, right] 42 left = mid + 1; 43 } 44 } 45 return -1; 46 } 47 };
分类:
二分查找法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具