国内十个免费自学网站,建筑网招工网,市场seo是什么,广东网站建站公司理论基础#xff1a;
程序员面试经典题#xff0c;二分搜索一个区间#xff0c;区间查找 (LeetCode 34)_哔哩哔哩_bilibili
手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode#xff1a;704. 二分查找_哔哩哔哩_bilibili
这个是红蓝法#xff0c;很牛…理论基础
程序员面试经典题二分搜索一个区间区间查找 (LeetCode 34)_哔哩哔哩_bilibili
手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode704. 二分查找_哔哩哔哩_bilibili
这个是红蓝法很牛二分查找为什么总是写错_哔哩哔哩_bilibili
在二分查找中计算中间位置使用mid left (right - left) / 2而不是mid (left right) / 2主要是为了避免整数溢出的问题。
此类型题目多样总结
34. 在排序数组中查找元素的第一个和最后一个位置
因为二分无法查到起止位置所以用两次二分一次左边界一次右边界
会不会漏查问题比如left左边会不会还有target
#includeiostream
using namespace std;
#includevector
int main()
{vectorintnums { 2,2 };int target 3;int l -1, r nums.size();while (l 1 ! r) //找第一个target{int m l (r - l) / 2;if (nums[m] target) l m;else r m;}if (r nums.size() || nums[r] ! target) return -1;cout l: l r: r endl; //r就是第一个targetl -1; r nums.size();while (l 1 ! r) //找最后一个target{int m l (r - l) / 2;if (nums[m] target) l m;else r m;}cout l: l r: r endl; //l就是最后一个targetreturn 0;
}
35. 搜索插入位置
#includeiostream
using namespace std;
#includevector
int main()
{vectorintnums { 1,3,5,6 };int l -1, r nums.size();int target 7;while (l 1 ! r){int m l (r - l) / 2;if (nums[m] target) r m; //核心else l m;}cout r;return 0;
}
69. x 的平方根