数组和字符串

文章介绍了数组、集合和列表的区别,强调数组在内存中的连续存储和固定索引。讨论了数组操作的时间复杂度,如读取是O(1),查找和插入、删除可能为O(N)。同时,文章阐述了双指针技巧在数组处理中的应用,包括从两端向中间的排序和快慢指针问题解决策略。
摘要由CSDN通过智能技术生成

1、数组

1.1 集合、列表、数组

集合:由一个或多个确定的元素所构成的整体
集合特点:集合中的元素类型不一定相同;无序

列表(又称线性列表):即按照一定的线性顺序,排列而成的数据项的集合。–数组和链表
列表特点:有序;长度可变

数组:列表的一种 实现方式,python中数组list。
数组特点:列表中没有索引,而数组有索引。数组中元素在内存中是连续存储的,且每个元素占用相同大小的内存。but列表的另一种实现方式——链表,它的元素在内存中则不一定是连续的

在这里插入图片描述

1.2 数组操作:

读取元素
1,找到该数组的索引 0 的内存地址;2,将内存地址加上索引值,作为目标元素的地址。
时间复杂度是常数级别,为 O(1)。
查找元素
从数组开头逐步向后查找
查找元素的时间复杂度为 O(N)
插入元素
移动出空位后,再插入
如果频繁地对数组元素进行插入操作,会造成时间的浪费
删除元素
删除掉数组中的某个元素后,数组中会留下 空缺 的位置,要保证在内存中是连续的,这就使得后面的元素需对该位置进行 填补 操作。
时间复杂度为 O(N)

双指针技巧

分别将两个指针分别指向数组的开头及末尾,然后将其指向的元素进行交换,再将指针向中间移动一步,继续交换,直到这两个指针相遇。
使用双指针的场景之一:从两端向中间迭代数组。这种技巧经常在排序数组中使用
使用双指针的场景之二:可以使用两个不同步的指针来解决问题,即快慢指针。与情景一不同的是,两个指针的运动方向是相同的,而非相反。关键:确定两个指针的移动策略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值