LeetCode 744 Find Smallest Letter Greater Than Target
2018-01-24 19:07
441 查看
扫描
二分查找法
public char nextGreatestLetter(char[] letters, char target) { //1.大于等于所有字母先处理 if(target>=letters[letters.length-1]) return letters[0]; for(int i=0;i<letters.length;i++){ if(letters[i]>target) return letters[i]; } return '\0'; }
二分查找法
/* 1.大于等于所有字母先处理 2.没有这个字符left就是答案,target一定介于letters[0]-letters[length-1]之间 letters中如果没有target 由于left最后会大于right target夹在right和left之间left就是答案 否则 对target左侧进行二分(和target相等作为二分的条件)相等右半段 不等左半端 最后一定是left在不等的位置并且离target最近 */ public char nextGreatestLetter(char[] letters, char target) { if(target>=letters[letters.length-1]) return letters[0]; int length = letters.length; int left = 0; int right = length - 1; int mid = ( left + right ) >> 1; while(left<=right) { // System.out.println("i"); if(letters[mid]==target) { // System.out.println("J"); int left2 = mid+1; int right2 = length-1; int mid2 = ( left2 + right2 ) >> 1; while(left2<=right2) { if(target==letters[mid2]) { left2 = mid2 + 1; mid2 = ( left2 + right2 ) >> 1; }else { right2 = mid2 - 1; mid2 = ( left2 + right2 ) >> 1; } } return letters[left2]; }else if(letters[mid]<target) { // System.out.println("k"); left = mid + 1; mid = ( left + right ) >> 1; }else { // System.out.println("g"); right = mid - 1; mid = ( left + right ) >> 1; } } return letters[left]; }
相关文章推荐
- LeetCode之Find Smallest Letter Greater Than Target(Kotlin)
- BinarySearch-744-Find Smallest Letter Greater Than Target
- leetcode745: Find Smallest Letter Greater Than Target
- [LeetCode] Find Smallest Letter Greater Than Target 找比目标值大的最小字母
- Find Smallest Letter Greater Than Target(leetcode)
- LeeCode Contest 62 Find Smallest Letter Greater Than Target
- Find Smallest Letter Greater Than Target问题及解法
- leetcode744: Find Smallest Letter Greater Than Target
- Find Smallest Letter Greater Than Target
- Find Smallest Letter Greater Than Target
- Find Smallest Letter Greater Than Target
- Smallest subarray with sum greater than a given value
- [LinkedIn] Smallest character that is strictly larger than the search character target
- [leetcode] 373. Find K Pairs with Smallest Sums 解题报告
- ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET
- leetcode Find K Pairs with Smallest Sums
- LeetCode[373] Find K Pairs with Smallest Sums
- LeetCode Find K Pairs with Smallest Sums
- [LeetCode] Find K Pairs with Smallest Sums 找和最小的K对数字
- Two Sum - Greater than target