二分查找基本实现
1 | public int binarySearch(int[] nums, int key){ |
变种二分查找,找出数组中key重复元素最左位置(注意边界)
1 | public int binarySearch(int[] nums, int key){ |
leetcode上二分查找题
1 | //求开方 69. Sqrt(x) (Easy) |
1 | //给定一个有序的字符数组 letters 和一个字符 target,要求找出 letters 中大于 target 的最小字符,如果找不到就返回第 1 个字符 |
1 | //以O(logN)时间复杂度找出有序数组中唯一不出现2次的元素 |
1 | //旋转数组中的最小数字 153. Find Minimum in Rotated Sorted Array (Medium) |
1 | //查找区间,找到最左位置,找到最右位置 |
总结
关于while
里的判断条件,如果缩小区间的形式是l = m-1 && h = m+1
(即两边闭区间),那么判断条件是l<=h
;否则应该是l<h