二分法
🐧二分法🐧转自:🔥【github】
ps:二分法一定要牢记3个经常用的模板,注意边界检测。
34.在排序数组中查找元素的第一个和最后一个位置
69.x的平方根
153.寻找旋转排序数组中的最小值
167.两数之和II-输入有序数组
278.第一个错误的版本
744.寻找比目标字母大的最小字母
二分法的3个模板必须记住 3个模板代码区别很小,主要在于找到target之后指针的处理,建议比较target时的大于小于等于三种情况都写出来进行讨论,不易搞混淆,还要牢记左右指针的越界时的处理。while循环里时<=符号,while循环结束后right指针在前,left指针在后。
寻找一个数(基本的二分搜索)
寻找左侧边界的二分搜索(检查 left 越界的情况)
寻找右侧边界的二分搜索(检查 right越界的情况)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253int binary_search(int ...
二分法(自刷)
二分法
二分法代码1234567891011121314151617181920212223242526272829303132333435363738// 二分查找(折半查找):对于已排序,若无序,需要先排序// 非递归int BinarySearch(vector<int> v, int value , int low, int high) { if (v.size() <= 0) { return -1; } while (low <= high) { int mid = low + (high - low) / 2; if (v[mid] == value) { return mid; } else if (v[mid] > value) { high = mid - 1; } else { low = mid + 1; } } return -1;}// 递归int BinarySearch2(ve ...