代码随想录打卡Day1

二分查找法

二分查找法的前提条件在于数组(列表)的元素排列是有序的,无序不能使用二分查找。
二分查找讲解视频
看完视频以后我对二分查找有了更深刻的理解,二分法常用的只有左闭右闭和左闭右开,在进行二分查找的循环中,循环条件就是查找的区间是合法的,区间内至少有1个元素,例如,在左闭右闭的方法中,[1, 1]中至少有“1”这个元素,区间合法;而对于左闭右开,[1, 1)中没有元素,这个区间就是非法的。
在确认区间合法后,才在区间中取中间值,并且与区间的极小值,极大值比较。

对于左闭右闭

由于每一次查找都需要在合法区间中寻找,且此次循环的合法区间不能包含上一次循环中已经筛除的值,所以在更新左右端点的值时,左端点的下标为中点下标+1,右端点的下标为中点下标-1

对于左闭右开

由于每一次查找都需要在合法区间中寻找,且此次循环的合法区间不能包含上一次循环中已经筛除的值,但是区间的右端点不在区间内,所以在更新左右端点的值时,左端点的下标为中点下标+1,右端点的下标为中点下标

注意

无论是左闭右闭还是左闭右开,在初始化时都必须要让数组中的所有元素都在初始合法区间内,例如数组nums为{1, 2, 3, 4}, 对于左闭右闭,那么初始的合法区间为[0, nums.size() - 1],而对于左闭右开,初始的合法区间应该为[0, nums.size())。

27. 移除元素

这个看视频很好理解,我之前刷到过这个题,当时没想到用双指针来做。。。

977.有序数组的平方

当时没想出来怎么用双指针来做,只是发现了数组无论是平方前还是平方后都是局部有序的。。双指针不光可以指针同向移动,也可以相向移动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值