Hello算法学习笔记之数组与链表

news2024/11/25 13:53:39

一、数组

线性数据结构,其将相同类型元素(链表就不一定要存储相同类型的元素)存储在连续的内存空间中。。数组有Index

数组的优点:访问很高效,O(1)

PS:元素长度是单个元素占用的内存空间,这里是4bytes

数组的缺点:初始化后长度不可变、插入或删除元素效率低下O(n

 

 

数组中首个元素对应数组的内存地址偏移量是0,Index可以理解为偏移程度,所以Index从0开始

二、链表

存储在非连续的内存空间中。

链表「节点 Node」包含两项数据,一是节点「值 Value」,二是指向下一节点的「指针 Pointer」,或称「引用 Reference」。

尾结点指向空,None

将头节点当作链表的代称,例如头节点 head 和链表 head 实际上是同义的。

初始化链表需要初始化Node和next:

# 初始化链表 1 -> 3 -> 2 -> 5 -> 4
# 初始化各个节点 
n0 = ListNode(1)
n1 = ListNode(3)
n2 = ListNode(2)
n3 = ListNode(5)
n4 = ListNode(4)
# 构建引用指向
n0.next = n1
n1.next = n2
n2.next = n3
n3.next = n4

链表优点:插入和删除节点的效率高O(1)

 

 链表缺点:访问节点效率低,占用内存大

def access(head: ListNode, index: int) -> ListNode | None:
    """访问链表中索引为 index 的节点"""
    for _ in range(index):
        if not head:
            return None
        head = head.next
    return head

三、列表

动态数组,解决数组长度不可变的缺点

列表的扩充机制:

  • 扩容机制:插入元素时可能超出列表容量,此时需要扩容列表。(if self.__size == self.capacity()或者size == 1/2 capacity或者...,可以自己定;size是真实长度,capacity是预定容量)扩容方法是根据扩容倍数创建一个更大的数组,并将当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/644167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS基础学习--13 Display(显示) 与 Visibility(可见性)

一、定义 display属性设置一个元素应如何显示 visibility属性指定一个元素应可见还是隐藏 二、隐藏元素 - display:none或visibility:hidden 隐藏一个元素可以通过把display属性设置为"none",或把visibility属性设置为"hidden"。但是请注意&am…

Aprioi关联算法

国际权威的学术会议IEEE International Conference on Data Mining (ICDM) 评选出了数据挖掘领域的十大经典算法,他们分别是:C4.5、kMeans、SVM、Apriori、EM、PageRank、AdaBoost、KNN、Naive Bayes以及CART。今天就让我们共同探讨一下十大算法之一Apri…

红黑树的插入和删除

红黑树(C) 红黑树简述红黑树的概念红黑树的性质红黑树结点定义 一,红黑树的插入插入调整插入代码 二,红黑树的验证三,红黑树的删除待删除的结点只有一个子树删除结点颜色为红色删除结点颜色为黑色 删除的结点为叶子节点…

【OpenMMLab AI实战营二期笔记】第六天 MMDetection代码课

0. 环境检测和安装 # 安装 mmengine 和 mmcv 依赖 # 为了防止后续版本变更导致的代码无法运行,暂时锁死版本 pip install -U "openmim0.3.7" mim install "mmengine0.7.1" mim install "mmcv2.0.0"# Install mmdetection rm -rf mmd…

软考A计划-系统架构师-知识点汇总-上篇

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Python转行的一点心得

Python现在非常火,语法简单而且功能强大,很多同学都想学Python!最近陆陆续续有很多小伙伴问我,学Python到底应该做什么,从事哪种岗位。下面是我们工作圈里面一些同学的苦恼: 一转行要趁早 上面类似的问题群里还有很多…

华为HCIA备考 易错题整理

1.IEEE802.1Q定义的 VLAN 帧格式中VLAN ID总共有多少bit 答:12 2.NAPT允许多个私有IP地址通过不同的端口号映射到同一个公有IP地址上,且不需要做任何关于端口号的配置。 3.IEEE802.1Q定义的VLAN帧总长度为多少字节? 答:4 4.关于…

阿里云创建ALB_Ingress

阿里云参考文档 1、编写alb AlbConfig创建文档 rootbiking-pre-middleware:~/alb# cat ingress-alb.yaml apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: #alb名称name: ingress-alb spec:config:name: ingress-albaddressType: InternetzoneMappings:# 两个交换…

chatgpt赋能python:Python按行输出方法

Python按行输出方法 Python作为一种快速易用的编程语言,广泛应用于数据分析、科学计算、web开发等领域。在Python编程过程中,输出数据是必不可少的环节。本文将介绍如何按行输出Python数据,为Python编程初学者提供参考。 什么是按行输出 按…

consul入门案例及配置热更新的实现

Consul的简单入门 当Producer启动时,会向Consul发送一个post请求,告诉Consul自己的ip和Port;Consul接收到producer的注册后,每个10S(默认),会向producer发送一个健康检查的请求,检验Producer是否健康当Consumer发送GET方式请求/api/address到Producer时,会先从Consul中拿到一个…

超越密码:网络安全认证的未来

你的物理现实的数字对应物正在惊人地增长。虽然肯定会有积极的结果,但随着互联网的发展,与之相关的风险也在迅速增加。在讨论网络安全风险管理时,首先想到的是密码。但当出现诈骗、网络钓鱼等威胁时,这还不够。 那么,…

chatgpt赋能python:Python爬虫:抓取数据的实用技巧

Python爬虫:抓取数据的实用技巧 如果您是一名数字营销从业者,那么您一定知道SEO的重要性。SEO是一项复杂的工作,但是其中包含了一个非常关键的步骤,就是通过爬虫从网站中抓取数据。Python是一个非常强大的工具,可以帮…

网络层:静态路由配置及其可能产生的路由环路问题

网络层:静态路由配置及其可能产生的路由环路问题 笔记来源: 湖科大教书匠:静态路由配置及其可能产生的路由环路问题 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 静态路由配置是指用户或网络管理员使用路由器的…

chatgpt赋能python:Python实现直线拟合及求斜率

Python实现直线拟合及求斜率 什么是直线拟合 直线拟合是一种数据处理方法,将一组数据点拟合成一条直线的形式,以求出其中的规律性关系,从而更好地理解数据点之间的相关性。 直线拟合的应用场景 直线拟合在很多领域都有应用,例…

openGauss5 企业版之开发设计规范

文章目录 1.数据库对象命名2. Database和Schema设计2.1 Database设计建议2.2 Schema设计建议 3. 表设计3.1选择存储方案3.2 选择分布方案3.3 选择分区方案3.4 选择分布键 1.数据库对象命名 数据库对象命名需要满足约束: 标识符非时序表长度不超过63个字节&#xff…

SSTI---总结

Laravel Blade是Laravel提供的一个既简单又强大的模板引擎 和其他流行的PHP模板引擎不一样,Blade并不限制你在视图view中使用原生的PHP代码 所有的Blade视图页面都将被编译成原生的PHP代码并缓存起来,除非你的的模板文件修改,否则不会重新编…

【RabbitMQ教程】第一章 —— RabbitMQ - 安装

💧 【 R a b b i t M Q 教程】第一章—— R a b b i t M Q − 安装 \color{#FF1493}{【RabbitMQ教程】第一章 —— RabbitMQ - 安装} 【RabbitMQ教程】第一章——RabbitMQ−安装💧 🌷 仰望天空,妳我亦是行人.✨ &#x…

腾讯丁珂:以数字安全免疫力建设安全新范式

6月13日,腾讯安全联合IDC等多家机构在北京举办研讨论坛,并发布“数字安全免疫力”模型框架,提出用免疫的思维应对新时期下安全建设与企业发展难以协同的挑战。腾讯集团副总裁、腾讯安全总裁丁珂在论坛上表示,数智化新阶段&#xf…

springCloud 中,openFeign 使用说明

文章目录 1、openFeign 中的每个方法中的参数和注解不能少。2、开启日志打印功能3、超时 1、openFeign 中的每个方法中的参数和注解不能少。 如果服务端方法中的数据含有注解,则 客户端 openFeign 中的每个方法中的参数和注解一个不能少,比较完全一致。…

chatgpt赋能python:Python抠图教程:用代码实现高效抠图

Python 抠图教程:用代码实现高效抠图 什么是抠图? 在设计、美术、广告等领域中,经常需要把一张图片中的某个物体或人物单独提取出来,以便于进行后续的处理、叠加、合成等操作。这个过程就叫做抠图。 传统的抠图方式需要用到PS、…