二分查找,在经过:
- 34——https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/
- 35——https://leetcode-cn.com/problems/search-insert-position/
- 69——https://leetcode-cn.com/problems/sqrtx/
- 367——https://leetcode-cn.com/problems/valid-perfect-square/
的学习之后,我的二分想法如下:
int left, right, mid;
while (left <= right) {
mid = left + (right - left)/2;
if (mid < target) {
left = mid + 1;
}else if (mid > target) {
right = mid - 1;
}else {
return mid;
}
return -1;
}
同时,以下有两个二分算法的注意事项:
- 使用二分,数组必须是非降序的
- 使用二分之前,必须将问题转化为在序列中寻找特定数值的数,或者在特定问题中的“比较”方式,即定义好所需的compareTo()