二分查找等于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 };
复制代码
posted @   跳动的休止符  阅读(452)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示