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都要检查, 但是不容易出错。
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;
评论
发表评论