Two Diff

public boolean twoDiff(int[] array, int diff){
    for(int i = 0; i < array.length - 1; i++){
        int target = array[i] + diff;
        if(binarySearch(target, array, i + 1)) return true;
    }

    return false;
}

private boolean binarySearch(int target, int[] array, int start){
    int end = array.length - 1;
    // binary search 
    while(start < end - 1){
        int mid = start + (end - start) / 2;
        if(array[mid] == target) {
            return true;
        }else if(array[mid] < target){
            start = mid;
        }else{
            // array[mid] > target
            end = mid;
        }
    }
    if(array[start] == target) return true;
    if(array[end] == target) return true;
    return false;
}

Two Diff

 

[1, 3, 5, 6, 7, 9], target 4. return true/false

 

n


1 + 4 = 5  , n



hashset =  ( 1, 1, 3, 5, 6, 7, 9),  0

 

posted on 2018-09-10 09:51  猪猪&#128055;  阅读(141)  评论(0)    收藏  举报

导航