2022-09-21算法训练Day1

昨天慌慌张张,其实一切都没有准备好,但是确实需要这么一次训练,全职带娃接近三年,很多技术细节都废了,马上开始入职新挑战也是全新的领域,我需要的就是学习力持久力。那么来试试水吧。希望顺利!

开始做题,未看解释,未看视频。看了题目和提示。开始做题。

今日任务(数组理论基础,704. 二分查找,27. 移除元素 )

27. 移除元素 - 力扣(LeetCode)

704. 二分查找 - 力扣(LeetCode)

(一)移除元素

其实用学过的最基础的东西,思路是有的,把某个元素删除的最笨的方法就是从后边一个一个的覆盖前一个。但是因为对于vector的不是完全了解,即不想用笨方法,又不是很确定那种一个函数就可以实现的方法,来回徘徊。

看了题目解析过来做题,依然是细节错误很多。题目解析没有认真看。

错误1.本题目就是在考察 vector的erase函数的实现,而我却想用erase函数了。

       2.题目要求:不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。//如果使用了数组空间,就是O(N)了。就是要在原来的数组上面操作。那么就是考察覆盖的细节。

      3.你不需要考虑数组中超出新长度后面的元素。//所以,不用erase的话,需要自己来维护这个长度的。


我提交的代码备注的添加根据自己的理解来:

(二)刷704二分查找,就吸取了教训,仔细读题,仔细写代码。一遍通过,这个很简单。

写了如下代码。

简单浏览一下答案,未细看,瞅见了left\right等,恍然大悟,二分法就是为了提高效率的,而我的那个代码就是最笨的,没有分。重新写吧。


写注释的地方就是我出现失误的地方,区间的划分还是考虑的不够细致。


今天刷了题目,都用最简单的方法写了一遍,算是对所学梳理的一个过程,不难,但是所要查考的东西还说掌握的不太好。

接下来重新看看知识点啦。


知识点的梳理

数组考察的是什么?

1.数组元素存在于连续的地址空间,数据类型相同。无法删除,只能覆盖,需要自己控制有效数据长度,也就是size的大小。

2.获取数组元素,通过下标既可以获得。

3.vector的实现虽然是基于数组,但是它本质上是容器。在考察到数组时候,好好看题目,不要与vector混淆啦

删除数组的第二个方法左右指针下午来弄。先写到这里吧。

你可能感兴趣的:(2022-09-21算法训练Day1)