算法第一天

今天一共编写了三道简单算法题:

分别是第一题的二分查找

在这里插入图片描述
第一题我总是出现超时的错误,我看题解也没有问题,我之前一直用的是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才行,不然就会超时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值