算法训练营第一天| 704. 二分查找、27. 移除元素

704. 二分查找

b站参考视频:https://www.bilibili.com/video/BV1fA4y1o715

状态:顺利用c++和pyhon两种语言做出左闭右闭区间下的情况

初始思路:很简单的二分法,只需要根据有序数组的特性进行比较搜索。

看完讲解视频之后的想法:我虽然做出了这道题目,但是我认为我的思考不够深入,没有意识到这个问题的核心是区间保持。如果是左闭右闭,那么左右元素都包含在区间内。左闭右开右边界是不包含于区间内的。不同的区间设置会影响初始left和right的赋值、循环终止的条件,也会影响后续循环过程中的赋值。但是我并没有意识到这一点,像一个莽夫,没有逻辑,仅仅凭借直觉去面对问题。

27. 移除元素

b站参考视频:https://www.bilibili.com/video/BV12A4y1Z7LP/?vd_source=93ab0cdef07eaa3015e60cacd82f8d4f

状态:c++和python均调用库函数实现,尝试双指针我想的是头尾指针,但是逻辑混乱,没有成功。

初始思路:首先c++提供了erase,python中提供了pop和del,均可以调用库函数遍历解决。然后还可以双指针。

看了一部分讲解视频之后:首先可以考虑遍历,当发现目标元素的时候,再嵌套循环,将后边的所有元素移上来。最重要的是采用双指针,slow指针是用于记录下一个非删除元素所在的位置,而fast则用于寻找非删除元素,很巧妙的思想。

拓展题 977. 有序数组的平方

状态:c++大体思路正确,但是细节不到位,出现了数组越界行为。

初始思路:先找到第一个非负数,然后左右指针分别扫描。

自己调试发现:1.初始思路太粗糙了,没有考虑到全正全负的情况,导致找第一个非负数这部分代码出现了越界和后续处理不当。2.后来双指针遍历比较的时候,只要其中一个指针越界遍历就会停止。但是我没有考虑到需要将没有遍历完的那个遍历完。总结我认为自己思维很混乱,边界条件也考虑的不清晰。

看了讲解视频之后:我认为他的思路很不一样,原来是可以从大到小来填充,这样对边界情况的处理会简单很多,也少了很多我的方法会出现的特殊情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值