当前位置: 首页 > news >正文

leetcode-代码随想录-链表-链表理论基础

链表:

  • 通过指针串联在一起的线性结构;
  • 每个节点包含两部分:数据域、指针域(存放下一个节点的指针)
  • 入口节点:称为 头节点 head
  • 最后一个节点的指针指向 NULL(空指针)

image.png

链表的类型

1. 单链表(Singly Linked List)

  • 结构:每个节点包含数据域和指向下一个节点的指针(next)。
  • 特点
    • 单向遍历,只能从头节点开始逐个访问。
    • 插入/删除节点的时间复杂度为 O(1)(已知前驱节点时)。
    • 查找时间复杂度为 O(n)
  • 缺点:- 无法逆向遍历,删除节点需要从头查找前驱节点。
  • 应用场景:简单队列、不需要反向操作的场景。

2. 双向链表(Doubly Linked List)

  • 结构:每个节点包含数据域、前驱指针(prev)和后继指针(next)。
  • 特点
    • 支持双向遍历(正向和逆向)。
    • 插入/删除节点的时间复杂度为 O(1)(已知目标节点时)。
  • 缺点:- 每个节点多占用一个指针的空间。
  • 应用场景:需要双向操作的场景(如浏览器历史记录、撤销/重做功能)。
    image.png

3. 循环链表(Circular Linked List)

  • 结构:链表首尾相连,形成闭环。
  • 类型
    • 单循环链表:尾节点指向头节点,只能单向循环遍历。
    • 双循环链表:头尾节点互相连接,支持双向循环遍历。
  • 特点
    • 从任意节点出发均可遍历整个链表。
    • 适合周期性操作。
  • 应用场景:轮询任务调度、约瑟夫环问题。
    image.png
链表的存储
  • 数组:连续分布
  • 链表:不连续的,分布在内存的不同地址空间上,通过指针串联在一起
链表相关代码

定义

// 单链表
struct ListNode {int val;  // 节点上存储的元素ListNode *next;  // 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {}  // 节点的构造函数
};

输出链表

void printLinkedList(ListNode* head){ListNode* cur = head;while(cur != nullptr) {cout << cur->val << " ";cur = cur->next;}cout << endl;
}

通过输入 - 创建单链表

int main() {int n, m;ListNode* dummyHead = new ListNode(0);while(cin >> n){if(n == 0){cout << "list is empty" << endl;continue;}ListNode* cur = dummyHead;while(n--){cin >> m;ListNode* newNode = new ListNode(m);cur->next = newNode;cur = cur->next;}}ListNode* head = dummyHead->next;printLinkedList(head);
}

直接创建单链表

    ListNode* head = new ListNode(1);head->next = new ListNode(2);head->next->next = new ListNode(3);head->next->next->next = new ListNode(4);head->next->next->next->next = new ListNode(5);head->next->next->next->next->next = new ListNode(6);

image.png

相关文章:

leetcode-代码随想录-链表-链表理论基础

链表&#xff1a; 通过指针串联在一起的线性结构&#xff1b;每个节点包含两部分&#xff1a;数据域、指针域&#xff08;存放下一个节点的指针&#xff09;入口节点&#xff1a;称为 头节点 head最后一个节点的指针指向 NULL&#xff08;空指针&#xff09; 链表的类型 1. 单…...

dify中配置使用Ktransformer模型

一共是两个框架一个是Ktransformer,一个是dify。 Ktransformer用来部署LLM,比如Deepseek,而LLm的应用框架平台Dify主要用来快速搭建基于LLM应用。 这篇教程主要是用来介绍两个框架的交互与对接的,不是部署Ktransformer也部署部署Dify,要部署Dify、Ktransformer可以直接参考…...

解释区块链技术的应用场景和优势

区块链技术是一种基于分布式账本的技术&#xff0c;被广泛应用于多个领域。以下是区块链技术的主要应用场景和优势&#xff1a; 应用场景&#xff1a; 金融领域&#xff1a;区块链可以用于支付结算、跨境汇款、智能合约等金融服务&#xff0c;提高交易效率和降低成本。物联网…...

明清两朝全方位对比

明清两朝是中国历史上最后两个封建王朝&#xff0c;在政治、经济、文化等方面存在显著差异&#xff0c;以下为主要区别&#xff1a; 一、政治制度 皇权集中程度 明朝&#xff1a;废除丞相制度&#xff0c;设内阁辅助皇帝&#xff0c;但中后期宦官专权&#xff08;如刘瑾、魏…...

Mysql的事务

事务的概念 简单的说事务就是一个连贯性任务,只有一起成功或者一起失败的说法。在mysql的事务中要么事务里的sql语句成功执行,其中有出错就回滚到事务开始时候的状态。对于已经提交的事务来说,该事务对数据库所做的修改将永久生效事务的四大特性ACID 原子性(Atomicity):一件…...

chromium魔改——绕过无限debugger反调试

在进行以下操作之前&#xff0c;请确保已完成之前文章中提到的 源码拉取及编译 部分。 如果已顺利完成相关配置&#xff0c;即可继续执行后续操作。 在浏览器中实现“无限 debugger”的反调试技术是一种常见的手段&#xff0c;用于防止他人通过开发者工具对网页进行调试或逆向…...

【力扣hot100题】(051)腐烂的橘子

我讨厌图论。 这道题写了特别久&#xff0c;不过好歹也是写出来了…… 方法是先将橘子全部遍历一遍&#xff0c;做两件事&#xff1a;①找出所有连通的橘子②找出所有腐烂的橘子&#xff0c;设置一个vector<queue<int>>&#xff0c;每个vector元素代表一片连通的…...

PyTorch实现线性回归的基础写法与封装API写法

目录 1. 基础写法 1.1导包 2.2加载读取数据 2.3原始数据可视化(画图显示) 2.4线性回归的(基础)分解写法 2.5定义训练过程 2.PyTorch实现 线性回归的封装写法(实际项目中的常用写法) 2.1创建线性回归模型 2.2定义损失函数 2.3定义优化器 2.4定义训练过程 1…...

【蓝桥杯】算法笔记3

1. 最长上升子序列(LIS) 1.1. 题目 想象你有一排数字,比如:3, 1, 2, 1, 8, 5, 6 你要从中挑出一些数字,这些数字要满足两个条件: 你挑的数字的顺序要和原来序列中的顺序一致(不能打乱顺序) 你挑的数字要一个比一个大(严格递增) 问:最多能挑出多少个这样的数字? …...

【Linux】条件变量封装类及环形队列的实现

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

wsl2 配置ubuntu 固定ip

提示&#xff1a;环境搭建 文章目录 前言一、安装sshd 服务1. ubuntu 子系统安装 openssh-server2.配置sshd 开启密码链接3.配置sshd 服务开机启动 二、配置固定IP1 查看i2 查看路由3 查看wsl虚拟网卡4 配置wsl 子系统网卡4 设置生效 三、问题1. ssh 无法远程 前言 提示&#…...

电机控制学习路线

一、基础理论准备阶段 电路与电子技术 电路分析基础&#xff08;基尔霍夫定律、动态电路分析&#xff09; 模拟电子技术&#xff08;放大器、滤波电路、功率器件&#xff09; 数字电子技术&#xff08;逻辑电路、微控制器基础&#xff09; 数学工具 线性代数&#xff08;矩…...

Sensodrive力控关节模组SensoJoint:TÜV安全认证助力机器人开发

在机器人技术领域&#xff0c;安全性和开发效率是行业关注的重点。SensoDrive的SensoJoint 机器人力控关节模组&#xff0c;凭借其可靠的安全性能和高效的开发优势&#xff0c;正在为机器人开发提供有力支持。 2025年3月31日&#xff0c;SensoDrive的 SensoJoint 力控关节模组获…...

【橘子大模型】Runnable和Chain以及串行和并行

一、Runnable 前面我们实现了一些关于如何和大模型进行交互的操作。那么我们此时来回顾一下我们当前进行的结构。 我们已经很清楚这些操作的具体含义了&#xff0c;所以我这里就不在多介绍了。我们来看其中的几个点 1、用户那边就是客户&#xff0c;没啥说的。 2、langchain&…...

数据结构 -- 图的存储

图的存储 邻接矩阵法 邻接矩阵存储不带权图 0 - 表示两个顶点不邻接 1 - 表示两个顶点邻接 在无向图中&#xff0c;每条边在矩阵中对应两个1 在有向图中&#xff0c;每条边在矩阵中对应一个1 //不带权图的邻接矩阵存储 #define MaxVertexNum 100 //顶点数目的最大值 typed…...

基于大模型预测不稳定性心绞痛的多维度研究与应用

目录 一、引言 1.1 研究背景与意义 1.2 研究目的 1.3 国内外研究现状 二、不稳定性心绞痛概述 2.1 定义与分类 2.2 发病机制 2.3 临床表现 三、大模型技术原理与应用基础 3.1 大模型介绍 3.2 在医疗领域的应用现状 3.3 用于不稳定性心绞痛预测的可行性 四、术前预…...

【Java集合】LinkedList源码深度分析

参考笔记&#xff1a;java LinkedList 源码分析&#xff08;通俗易懂)_linkedlist源码分析-CSDN博客 目录 1.前言 2.LinkedList简介 3.LinkedList的底层实现 4.LinkedList 与 ArrayList 的对比 4.1 如何选择 4.2 对比图 5.LinkedList 源码Debug 5.1 add(E e) &#xff…...

Java 大视界 -- Java 大数据在智能供应链库存优化与成本控制中的应用策略(172)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

高并发系统架构设计核心要点的结构化提炼【大模型总结】

以下是对高并发系统架构设计核心要点的结构化提炼&#xff0c;结合技术深度与实践视角&#xff0c;以清晰的层次呈现关键策略与实现路径&#xff1a; 一、核心理念重塑 1. 容错优先思维 设计哲学&#xff1a;从"零故障"转向"可恢复性"设计&#xff0c;接…...

【C#深度学习之路】如何使用C#实现Stable Diffusion的文生图功能

【C#深度学习之路】如何使用C#实现Stable Diffusion的文生图功能 项目背景项目实现写在最后项目下载链接 本文为原创文章&#xff0c;若需要转载&#xff0c;请注明出处。 原文地址&#xff1a;https://blog.csdn.net/qq_30270773/article/details/147002073 项目对应的Github地…...

k8s的pod的概述和配置

概念 Pod 容器组 是一个k8s中一个抽象的概念&#xff0c;用于存放一组 container&#xff08;可包含一个或多个 container 容器&#xff0c;即图上正方体)&#xff0c;以及这些 container &#xff08;容器&#xff09;的一些共享资源。这些资源包括&#xff1a; 共享存储&…...

RTOS任务句柄的作用

任务句柄(Task Handle)在 FreeRTOS 中的作用详解 任务句柄(TaskHandle_t)是 FreeRTOS 中用于 唯一标识和管理任务 的核心机制,本质是一个指向任务控制块(TCB)的指针。说明即便创建的任务名相同,但对应的任务句柄一定是不同。 它在任务管理、通信、调试中起到关键作用,…...

OpenVLA-OFT——微调VLA的三大关键设计:并行解码、动作分块、连续动作表示以及L1回归目标

前言 25年3.26日&#xff0c;这是一个值得纪念的日子&#xff0c;这一天&#xff0c;我司「七月在线」的定位正式升级为了&#xff1a;具身智能的场景落地与定制开发商 &#xff0c;后续则从定制开发 逐步过渡到 标准产品化 比如25年q2起&#xff0c;在定制开发之外&#xff0…...

LocaDate、LocalTime、LocalDateTime

Java8的时间处理 Java的时间处理在早期版本中存在诸多问题&#xff08;如 java.util.Date 和 java.util.Calendar 的混乱设计&#xff09;&#xff0c;但Java8引入了引入了全新的 java.time包&#xff08;基于JSR 310&#xff09;&#xff0c;提供了更清晰、线程安全且强大的时…...

哈密尔顿路径(Hamiltonian Path)及相关算法题目

哈密尔顿路径要求访问图中每个顶点恰好一次&#xff0c;通常用于解决旅行商问题&#xff08;TSP&#xff09;或状态压缩DP问题。 哈密尔顿路径&#xff08;Hamiltonian Path&#xff09;是指在一个图中经过每个顶点恰好一次的路径。如果这条路径的起点和终点相同&#xff08;即…...

突破传统限制!全新端到端开放词汇多目标跟踪框架OVTR,开启视觉追踪新纪元

在自动驾驶和智能监控等场景中&#xff0c;多目标跟踪&#xff08;MOT&#xff09;技术需要应对现实世界中层出不穷的新物体类别。传统方法依赖预定义类别&#xff0c;面对“无人机配件”“新型宠物”等未知目标时往往失效。上海人工智能实验室团队提出的OVTR&#xff08;Open-…...

Springboot + Vue + WebSocket + Notification实现消息推送功能

实现功能 基于Springboot与Vue架构&#xff0c;首先使用Websocket实现频道订阅&#xff0c;在实现点对点与群发功能后&#xff0c;在前端调用windows自带的消息通知&#xff0c;实现推送功能。 开发环境 Springboot 2.6.7vue 2.6.11socket-client 1.0.0 准备工作 在 Vue.js…...

Linux内核物理内存组织结构

一、系统调用sys_mmap 系统调用mmap用来创建内存映射&#xff0c;把创建内存映射主要的工作委托给do_mmap函数&#xff0c;内核源码文件处理&#xff1a;mm/mmap.c 二、系统调用sys_munmap 1、vma find_vma (mm, start); // 根据起始地址找到要删除的第一个虚拟内存区域 vma 2…...

Redis高级技能进阶

什么是事务的ACID 事务是由一系列对系统中数据进行访问或更新的操作组成的程序执行逻辑单元。这些操作要么都执行&#xff0c;要么都不执行。 为了保证数据库的一致性&#xff0c;在事务处理之前和之后&#xff0c;都应该遵循某些规则&#xff0c;也就是大家耳熟能详的ACID。 …...

PCB设计基础:面向嵌入式工程师的系统性指南

嵌入式系统的性能、稳定性和可靠性&#xff0c;很大程度上依赖于电路硬件的设计质量。在硬件设计中&#xff0c;PCB&#xff08;Printed Circuit Board&#xff09;设计是连接系统功能与实际运行的关键一环。本文将从嵌入式工程师的视角&#xff0c;系统性地介绍PCB设计的关键基…...

aspark 配置2

编写Hadoop集群启停脚本 1.建立新文件&#xff0c;编写脚本程序 在hadoop101中操作&#xff0c;在/root/bin下新建文件&#xff1a;myhadoop&#xff0c;输入如下内容&#xff1a; 2.分发执行权限 保存后退出&#xff0c;然后赋予脚本执行权限 [roothadoop101 ~]$ chmod x /r…...

【统计方法】LASSO筛变量

启 比较原始做LASSO包是library(glmnet) 若目标是纯 LASSO 分析&#xff0c;alpha 必须设为 ​​1 ​​标准化数据​​&#xff1a;LASSO 对特征的尺度敏感&#xff0c;需对数据进行标准化&#xff08;均值为0&#xff0c;方差为1&#xff09;。 cv.glmnet​获得的lambda.m…...

拥抱健康生活,书写养生新篇

在快节奏的现代生活中&#xff0c;健康愈发成为人们关注的焦点。践行健康养生&#xff0c;并非是一种选择&#xff0c;而是我们对自己和家人应尽的责任。掌握正确的养生之道&#xff0c;不仅能提升生活品质&#xff0c;更能让生命焕发出新的活力。​ 合理饮食是健康的基石。一…...

Shiro学习(五):Shiro对权限的缓存

一、问题描述 由前边的学习中了解&#xff0c;用户的角色权限一般存储在数据库中&#xff0c;每次进行权限校验时都要从 数据库查询用户的角色权限信息&#xff1b;对数据库来说这样频繁的查询压力太大了&#xff0c;也影响程序的 性能。 Shiro 中执行权限角色校验时&#xff0…...

QGIS实战系列(六):进阶应用篇——Python 脚本自动化与三维可视化

欢迎来到“QGIS实战系列”的第六期!在前几期中,我们从基础操作到插件应用逐步提升了 QGIS 技能。这一篇,我们将迈入进阶领域,探索如何用 Python 脚本实现自动化,以及如何创建三维可视化效果,让你的 GIS 项目更高效、更立体。 第一步:Python 脚本自动化 QGIS 内置了 Py…...

redis-cpp-cpp如何使用lua脚本

1.前言 我今天要在项目中使用lua脚本&#xff0c;结果搞半天都没有弄明白这个函数怎么调用&#xff0c;而且也似乎很少有redis相关的博客介绍&#xff0c;ai也回答的不准确&#xff01; 2.正文 今天用一个例子演示一下 下面是lua脚本 const std::string LuaScript R"…...

C# Winform 入门(6)之不同类之间的值传递

承接上一个教程&#xff0c;利用委托事件来进行值传递 声明变量 public static double plx, ply,plxx,plyy;声明委托、事件 //声明委托 //事件 public delegate void transferDistance(double dis); public static transferDistance doTransfer; 直接读取form1中的变量 publ…...

PyTorch 深度学习 || 6. Transformer | Ch6.1 注意力机制

...

JWT 秘钥的作用机制

JWT 秘钥的作用并不是给前端使用的&#xff0c;而是用于后端服务器内部的一个重要安全机制。 JWT 秘钥的作用 签名与验证&#xff1a; 秘钥主要用于对 JWT&#xff08;JSON Web Token&#xff09;进行签名和验证后端使用这个秘钥对令牌进行签名&#xff0c;确保令牌的完整性…...

sun.misc.BASE64Encoder 和 sun.misc.BASE64Decoder包

1. 在将别人的项目导入eclipse之后,出现了"sun.misc.BASE64Encoder找不到jar"的错误&#xff0c;我解决的办法是&#xff1a;右键项目》属性》Java Build Path》jre System Library 》access rules 》resolution选择accessible,下面填上**点击确定即可&#xff0…...

Java面试黄金宝典34

1. 主键索引底层的实现原理 定义 主键索引是数据库中用于唯一标识表中每一行记录的索引&#xff0c;常见的底层实现是 B 树结构。B 树是一种平衡的多路搜索树&#xff0c;由内部节点和叶子节点组成。内部节点只存储索引键和指向下一层节点的指针&#xff0c;不存储实际数据&am…...

计算机系统---CPU

定义与功能 中央处理器&#xff08;Central Processing Unit&#xff0c;CPU&#xff09;&#xff0c;是电子计算机的主要设备之一&#xff0c;是计算机的核心部件。CPU是计算机的运算核心和控制核心&#xff0c;负责执行计算机程序中的指令&#xff0c;进行算术运算、逻辑运算…...

AWS云安全基线:构建企业级安全防护体系的完整指南

1. 引言 随着越来越多的企业将其业务和数据迁移到云端,云安全已成为一个不容忽视的关键议题。AWS作为全球领先的云服务提供商,提供了丰富的安全工具和最佳实践。本文将深入探讨如何构建一个全面的AWS云安全基线,以确保您的企业在云环境中的安全性。 2. AWS共享责任模型 在深…...

(三十三)Dart 中使用 Pub 包管理系统与 HTTP 请求教程

Dart 中使用 Pub 包管理系统与 HTTP 请求教程 Pub 包管理系统简介 Pub 是 Dart 和 Flutter 的包管理系统&#xff0c;用于管理项目的依赖。通过 Pub&#xff0c;开发者可以轻松地添加、更新和管理第三方库。 使用 Pub 包管理系统 1. 找到需要的库 访问以下网址&#xff0c…...

如何实现单例模式?

一、模式定义与核心价值 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;保证一个类仅有一个实例&#xff0c;并提供全局访问点。其核心价值在于&#xff1a; ​​资源控制​​&#xff1a;避免重复创建消耗性资源&#xff08;如数据库连…...

【51单片机】2-4【I/O口】震动传感器控制继电器

1.硬件 51最小系统继电器模块震动传感器模块 2.软件 #include "reg52.h"sbit vibrate P3^3;//震动传感器DO接到P3.3口 sbit switcher P1^1;//继电器控制端IN接到P1.1void Delay2000ms() //11.0592MHz {unsigned char i, j, k;// _nop_();i 15;j 2;k 235;do{…...

正点原子 迷你 miniSTM32用ST link烧录后程序不运行(已解决)

情况&#xff0c;在程序和配置都没有问题时检查 烧录使用ST linkv2 烧录后有时程序可行&#xff0c;有时不可行 解决方法 加USB供电配合SW烧录 建议直接用USB转串口烧录 不推荐JLINK供电&#xff0c;也不推荐ST linkv2供电...

如何确保MQ消息队列不丢失:Java实现与流程分析

前言 在分布式系统中&#xff0c;消息队列&#xff08;Message Queue, MQ&#xff09;是核心组件之一&#xff0c;用于解耦系统、异步处理和削峰填谷。然而&#xff0c;消息的可靠性传递是使用MQ时需要重点考虑的问题。如果消息在传输过程中丢失&#xff0c;可能会导致数据不一…...

Pascal语言的系统监控

Pascal语言的系统监控 引言 在现代计算机系统中&#xff0c;系统监控是确保计算机平稳运行的重要组成部分。无论是个人计算机还是大型服务器&#xff0c;监控系统的性能、资源使用及状态&#xff0c;都是提高系统效率、及时发现问题的关键。Pascal语言作为一种结构化编程语言…...

6.0 使用Qt+ OpenCV+Python加载图片

本例作为python图像处理的入门课程1,使用Qt+ OpenCV+Python加载图片。 主要有如下几个地方需要注意: 1. OpenCV 默认使用 BGR 格式,而 Qt 使用 RGB。显示前需要转换:cv2.cvtColor(img, cv2.COLOR_BGR2RGB),一般使用某个QLabel控件进行显示。 pic = cv2.cvtColor(pic, cv2.C…...