Binary Search Java

来源:3-6 对撞指针 Two Sum II - Input Array is Sorted

Kabikabi

2020-07-11

波波老师 在 Leetcode# 167 Binarysearch Java的实现里, 让 j 遍历到 num.length-1J是因为我们闭区间的设定
但是 i < num.length-1, 为什么不像暴力解法 里 i < num.length ?这个怎末理解 是因为遍历到底的时候 j 已经在 num.length-1 的位置了吗 ? 所以 i 到 num.length-2 就行了, 这样理解可以吗 怎样理解才是正确的
***for(int i = 0 ; i < numbers.length - 1 ; i ++)***{
int j = binarySearch(numbers, i+1, numbers.length-1, target - numbers[i]);
if(j != -1){
int[] res = {i+1, j+1};
return res;

写回答

1回答

liuyubobobo

2020-07-11

因为 i 到达 num.length - 1 的时候,j 已经无法去任何值了。


其实,对于暴力解法,用 i < num.length-1 也是正确的。


对于二分搜索的解法,如果你是先的二分搜索考虑了搜索区间 [a, b] a 可能大于 b 的情况,使用 i < num.length 也是正确的。在 a > b 的时候直接返回 -1 了。


继续加油!:)

0
0

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程