
1.数组
文章平均质量分 73
数组算法LC
pig不会cv
这个作者很懒,什么都没留下…
展开
-
第一节:数组学习心得
下标从0开始,内存连续地址连续(一维数组),不能删,相同类型的数据集合。python、JAVA的二维数组内存地址不连续C++的二维数组内存地址连续。原创 2023-10-13 11:23:46 · 80 阅读 · 0 评论 -
1.数组理论基础
因此,数组中的第一个元素的内存地址是最小的,而最后一个元素的内存地址是最大的。这种连续存储的方式使得我们可以通过下标来访问数组中的元素,并且可以通过简单的地址计算来定位数组中的任意元素。这种连续存储的方式使得数组在内存中的访问更加高效,因为可以通过简单的地址计算来确定元素的位置。可以看到,每个元素的内存地址相对于前一个元素的地址增加了固定的偏移量(在这个例子中是 4 个字节,因为一个整数占用 4 个字节的内存空间)。这种连续存储的方式有助于提高内存访问的效率,因为可以通过简单的指针运算来访问数组的元素。原创 2023-10-04 12:28:48 · 146 阅读 · 1 评论 -
1.1 二分查找(LC704)
依然报错:因为三层if-else应该是同级的,都在while下面的同一级。而我嵌套着写,说明elif是if的下一级,而else是elif的下一级;要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是。的值,直到找到目标值或搜索范围缩小为空,循环才会结束。在循环结束时,如果仍未找到目标值,则会执行。我这里假设区间为左闭右开,写代码的时候一直基于这个原则去写。没有执行,循环会继续执行,根据目标值与。的值,并且不会执行循环的剩余部分。原创 2023-10-07 09:48:38 · 103 阅读 · 1 评论 -
1.2移除元素(LC27)
使用双指针法(快慢指针法),可以节省时间复杂度。定义快慢指针两个指针都指向一个数组,fast的任务是找到符合要求的新数组元素,slow则对应 新数组元素的下标。原创 2023-10-08 10:23:06 · 102 阅读 · 1 评论 -
1.3 有序数组的平方
算法分析:正常的暴力算法(先遍历,再平方,再sortd排序,时间复杂度为O(n+nlogn))。要想简化时间复杂度,可以用双指针法。原创 2023-10-09 10:50:31 · 118 阅读 · 1 评论 -
1.4 长度最小的子数组(LC209)
暴力解法是 两个for循环,然后不断的寻找符合条件的子序列,时间复杂度是O(n^2)。所谓滑动窗口,。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。那么滑动窗口如何用一个for循环来完成这个操作呢。首先要思考 如果用一个for循环,那么应该表示 滑动窗口的起始位置,还是终止位置。如果只用一个for循环来表示 滑动窗口的起始位置,那么如何遍历剩下的终止位置?此时难免再次陷入 暴力解法的怪圈。所以。原创 2023-10-10 10:57:48 · 83 阅读 · 1 评论 -
1.5 螺旋矩阵(LC59-M)
本质上生成的是二维矩阵。可以以坐标的形式赋值,比如(i,j)表示第i行第j列元素。赋值时要考虑n的奇偶,原创 2023-10-11 10:37:47 · 73 阅读 · 0 评论