重温算法Day3:数组

数组主要是对概念的理解:
1.数组(Array):一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。
2.线性表(Linear List):线性表上的数据最多只有前和后两个方向;非线性表:数据之间并不是简单的前后关系。
3.数组支持随机访问,根据下标随机访问的时间复杂度为 O(1);插入和删除的平均时间复杂度:O(n)
4.如果数组只是被当作一个存储数据的集合。在这种情况下,如果要将某个数据插入到第 k 个位置,为了避免大规模的数据搬移,直接将第 k 位的数据搬移到数组元素的最后,把新的元素直接放入第 k 个位置。删除操作同样如此。
5.批量删除,先做标记,达到缓冲阀值后一次执行。
6.数组越界问题。

在 C 语言中,只要不是访问受限的内存,所有的内存空间都是可以自由访问的。根据我们前面讲的数组寻址公式,a[3]也会被定位到某块不属于数组的内存地址上,而这个地址正好是存储变量 i 的内存地址,那么 a[3]=0 就相当于 i=0,所以就会导致代码无限循环。

练习:

https://leetcode-cn.com/problems/3sum/

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例:

给定数组 nums = [-1, 0, 1, 2, -1, -4],

满足要求的三元组集合为:
[
  [-1, 0, 1],
  [-1, -1, 2]

]

发布了142 篇原创文章 · 获赞 24 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/Linzhongyilisha/article/details/105547440