- **二分法,是数据结构算法中比较基础的知识点;难点主要是边界取值问题
本文主要是探讨二分法区间取值情况,帮大家和我自己理清楚区间取值
1.取边界,Right = nums.length || Right = nums.length-1
情况1:Right = nums.length ; while(left < right)
这种情况下,每一次二分取值mid后,判断nums[mid],如果nums[mid] > target,那么更新右边界时,必须注意,此时Right = mid;
防止出现**[target , mid , right]; 更新Right = mid-1;会跳出循环外,返回值为mid的情况。
情况2:Right = nums.length-1 ; while(left <= right)
这种情况下,每一次二分取值mid后,判断nums[mid],如果nums[mid] > target,那么更新右边界时,必须注意,此时Right = mid - 1 ;**
防止出现left == Right,一直在循环内死循环问题;。
搞清楚这两点,二分法就没有任何难点啦,哈哈哈哈哈