Binary Search Template and Summary

01/17/2018 update
Find the duplicate number 不适合使用start + 1< end模板。如果不好判断start 和end差距应该换模板。

第二种模板,可以把start = mid + 1加到满足的条件里面,所以最后退出的时候start就是结果。

01/16/2018 update
还是用九章总结的模板吧,更加统一,虽然start和end都要检查, 但是不容易出错。
        int start = 0, end = nums.length - 1;
        while (start+ 1< end) {  
            int mid = start+ (end- start)/2;  
            if (nums[mid] >= target){  
                end = mid;  
            }  else {
                start = mid;
            }
         }
        if (nums[start] == target) return start;
        else  if (nums[end] == target) return end;
 --------------------------------------------------------
        int low = 0, high = nums.length - 1;  
        while (low < high) {  
            int mid = low + (high - low)/2;  
            if (nums[mid] = target) {  
                break;    
            } else if (nums[mid] > target){  
                high = mid;  
            }  else {
                low = mid + 1;
            }
        }
        return low;

评论

此博客中的热门博文

663. Equal Tree Partition

776. Split BST

426. Convert Binary Search Tree to Sored Doubly Linked List