java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 |
---|

二分查找
解题思路:时间复杂度O( l o g 2 n log_2n log2n),空间复杂度O( 1 1 1) |
---|
- 二分查找,如果当前mid字符<=target,则left = mid+1,也就是去mid右边找,因为我们要找一个比target大的字符
- 当我们mid>target,则right = mid。也就是去mid左边找,试图找一个更小的符合条件的。因为我们要找一个字符,不光比target大,还要是所有比target大的字符中最小的

class Solution {public char nextGreatestLetter(char[] letters, char target) {int n = letters.length;int left = 0,right = n-1;if(target >= letters[right]) return letters[0];int mid = 0;while(left<right){mid = left + (right - left)/2;if(letters[mid]<=target) left = mid+1;else right = mid;}return letters[left];}
}