今天一共编写了三道简单算法题:
分别是第一题的二分查找
第一题我总是出现超时的错误,我看题解也没有问题,我之前一直用的是low=mid++;
和high=mid–;而当用high=mid+1这种的时候就不会超时。不是很理解为什么超时,希望后续可以想通。
第二题也是二分查找,只是换了一种说法
而且leetcode容易出现超时的现象,我以前的折半查找一直用的是**(low+high)/2;就很容易出现超时的现象,现在学到了一种新的折半,即int mid = low + (high - low) / 2;**这样就不会出现超时了。
对于为什么不能用(low+high)/2,我已经知道了,因为使用(high+low)/2可能导致溢出,比如high和low加起来超过int 能表示的最大的正整数时,会变为负数,从而导致计算错误。
第三题是也是对折半查找的运用:
总结:对于什么时候要用low<high;什么时候用low<=high;还不是很清楚,希望后续可以搞明白。
尤其是第一题和第三题,都是用low<=high可以解决,而第二题用low<high才行,不然就会超时。