仔细分析了下,如果是全部相加,就要遍历每个元素,那不如直接查找了。
数组长度 int L = arr.length=99,
取最中间的角标,mid = L/2-1=48,
判断 arr[mid]==49,
如果不等于49,缺少的那个元素就在前半部分,
然后 mid /=2,
判断 arr[mid]==mid+1,
这样的方法越是到最后范围很小的时候,越显得冗余,
所以最好范围的长度控制在5左右了就开始遍历,这样最快了。
因为你的数组长度还是很小,怎么算都没差别,
如果长度几千几万的,这个方法的便捷就显现出来了。
|
|