| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数组基本知识 -> 正文阅读 |
|
[数据结构与算法]数组基本知识 |
0. 内容说明最近在自己编写一些小的算法的时候,深感自己的算法过于臃肿。碰巧Datawhale在新的一期组队学习中组织了数据结构与算法的课程学习。于是就参加了,再次感谢Datawhale~~ 首先跟大家分享一下两个自己感觉比较好的学习资料,一个是 算法通关手册 ,也是Datawhale在本次组队学习中的学习资料;一个是B站上的视频 【北京大学】数据结构与算法Python版(完整版),老师讲的特别棒(也难得有Python版的数据结构课程,哈哈~)。 需要指出的是:本次博客的内容更像是对上述两个资料做的笔记,很多都是资料上的原内容,并非原创。 1. 数组的基本定义数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到下标下对应的数据。(图片来自于资料 算法通关手册)
综合这两个角度,数组就可以看做是:使用了「顺序存储结构」的「线性表」的一种实现方式。 2. 数组的基本操作数组的基本操作就是我们最常提到的那四个字:增、删、改、查 2.1 增增加元素分为两类:【在数组的尾部增加元素】以及【在数组的第 i 位增加元素】。
2.2 删增加元素分为两类:【在数组的尾部删除元素】以及【在数组的第 i 位删除元素】。
2.3 改将数组中第 i 个元素值改为 val:改变元素操作跟访问元素操作类似。需要先检查 i 的范围是否在合法的范围区间,即 0 <= i <= len(nums) - 1。然后将第 i 个元素值赋值为 val。访问操作不依赖于数组中元素个数,因此时间复杂度为
O
(
1
)
O(1)
O(1)
2.4 查查找数组中元素值为 val 的位置:在数组无序的情况下,只能通过将 val 与数组中的数据元素逐一对比的方式进行检索,也称为线性查找。建立一个基于下标的循环,每次将val 与当前数据元素 nums[i] 进行比较。在找到元素的时候返回元素下标,找不到时可以返回一个特殊值(例如 -1)。线性查找操作依赖于数组中元素个数,因此时间复杂度为 O ( n ) O(n) O(n)
3. 数组基本题目需要指出的是,以下答案是我参考或者直接借鉴 算法通关手册 一书中给出的答案,大家可以去该资料中查看相应题目更详细的解答和讲解 3.1 0066加一:题目描述: 解答:
3.2 0724 寻找数组中心下标题目描述: 解答:
3.3 0189旋转数组题目描述:(注意题目中提到希望我们可以在空间复杂度为
O
(
1
)
O(1)
O(1) 的情况下解答,即就在原数组上进行操作) 解答:
3.4 0048. 旋转图像题目描述: 解答:
3.5 0054. 螺旋矩阵题目描述:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 1:37:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |