数组:
- 701.二分查找
思路:
1.看到有序数组,且无重复元素,明确用二分法
2.二分法第一要义,考虑每个寻找区间统一用左闭右闭or左闭右开
3.跳出循环的条件:
- 如果是左闭右闭的情况,那么跳出循环的条件就是left>right,因为左闭右闭的情况下left=right是有意义的,只有left>right才跳出去;
- 如果是左闭右开的情况,那么跳出循环的条件就是left> =right,因为左闭右开的情况下left=right是没有意义的,所以只要到了left=right就可以跳出去
4.在while循环内部:
- 如果是左闭右闭的情况,那么left和right重新赋值时,应该是left=mid+1,或者是right=mid-1,因为mid相当于已经考虑过了确实不是,而下一个寻找区间是左闭右闭,所以直接以mid+1或mid-1作为边界;
- 如果是左闭右开的情况,那么left和right重新赋值时,应该是left=mid+1,或者是right=mid,因为mid相当于已经考虑过了确实不是,而下一个寻找区间是左闭右开,所以对right来说只有把边缘继续定为mid,下一个寻找区间才会包括mid-1在内,如果直接定为right=mid-1是取不到mid-1自身的
语法tips:
- 获取数组长度:len = num.length 【没有括号】
- 获取字符串长度:len=str.length() 【有括号】