休息日的思考与额外题——链表

文章目录

  • 前言
    • 链表知识点
  • 一、 92. 反转链表 II
  • 二、21. 合并两个有序链表
  • 总结


前言

一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油!
二刷决定精刷了,于是参加了卡子哥的刷题班,训练营为期60天,我一定能坚持下去,迎来两个月后的脱变的,加油!
推荐一手卡子哥的刷题网站,感谢卡子哥。代码随想录

链表知识点

链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。
链表的入口节点称为链表的头结点也就是head。
链表分为单链表、双链表、循环链表
链表在内存中储存不是连续分布的,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。

一、 92. 反转链表 II

92. 反转链表 II
Note:暴力与头插,其中头插值得一看,很有思考的一种方法。

class Solution {
private:void reverseLinkedList(ListNode *head) {// 也可以使用递归反转一个链表ListNode *pre = nullptr;ListNode *cur = head;while (cur != nullptr) {ListNode *next = cur->next;cur->next = pre;pre = cur;cur = next;}}public:ListNode *reverseBetween(ListNode *head, int left, int right) {// 因为头节点有可能发生变化,使用虚拟头节点可以避免复杂的分类讨论ListNode *dummyNode = new ListNode(-1);dummyNode->next = head;ListNode *pre = dummyNode;// 第 1 步:从虚拟头节点走 left - 1 步,来到 left 节点的前一个节点// 建议写在 for 循环里,语义清晰for (int i = 0; i < left - 1; i++) {pre = pre->next;}// 第 2 步:从 pre 再走 right - left + 1 步,来到 right 节点ListNode *rightNode = pre;for (int i = 0; i < right - left + 1; i++) {rightNode = rightNode->next;}// 第 3 步:切断出一个子链表(截取链表)ListNode *leftNode = pre->next;ListNode *curr = rightNode->next;// 注意:切断链接pre->next = nullptr;rightNode->next = nullptr;// 第 4 步:同第 206 题,反转链表的子区间reverseLinkedList(leftNode);// 第 5 步:接回到原来的链表中pre->next = rightNode;leftNode->next = curr;return dummyNode->next;}
};

Note:头插法,画图思路不要乱。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseBetween(ListNode* head, int left, int right) {ListNode* dummyHead = new ListNode(0);dummyHead->next = head;ListNode* pre = dummyHead;for  (int i = 1; i < left; i++)pre = pre->next;ListNode* cur = pre->next;ListNode* next = NULL;for (int i = 0; i < right - left; i++)  {next = cur->next;cur->next = next->next;next->next = pre->next;pre->next = next;}return dummyHead->next;}
};

在这里插入图片描述

二、21. 合并两个有序链表

21. 合并两个有序链表

Note:这题还是递归简单一点

/*** struct ListNode {*	int val;*	struct ListNode *next;*	ListNode(int x) : val(x), next(nullptr) {}* };*/
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类*/ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {// write code hereListNode* dummyHead = new ListNode(-1);ListNode* pre = dummyHead;while (pHead1 != nullptr && pHead2 != nullptr) {if (pHead1->val < pHead2->val) {pre->next = pHead1;pHead1 = pHead1->next;} else {pre->next = pHead2;pHead2 = pHead2->next;}pre = pre->next;}pre->next = pHead1 == nullptr ? pHead2 : pHead1;return dummyHead->next;}
};

总结

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

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

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

相关文章

择吉日择吉时接口

接口数据api 接口平台&#xff1a;https://api.yuanfenju.com/ 开发文档&#xff1a;缘份居国学研究开发者API 支持格式&#xff1a;JSON 请求方式&#xff1a;HTTP POST <?php//密钥 $api_secret "wD******XhOUW******pvr"; $gateway_host_url "http…

富文本编辑器CKEditor4简单使用-01

富文本编辑器CKEditor4简单使用-01 1. 快速体验入门1.1 通过从 CDN 加载 CKEditor 来快速体验1.2 从官方网站下载软件包1.2.1 官网下载1.2.2 解压、简单使用&#xff08;自带index页面示例&#xff09;1.2.3 将 CKEditor 4 添加到自己的页面1.2.3.1 目录结构1.2.3.2 效果1.2.3.…

TensorFlow2实战-系列教程6:迁移学习实战

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 1、迁移学习 用已经训练好模型的权重参数当做自己任务的模型权重初始化一般全连接层需…

【机器学习】工程实践问题概述

机器学习实际应用时的工程问题与面临的挑战 一、实现细节问题 1.1 训练样本 训练样本与标注对各类机器学习算法和模型的精度影响 训练样本的选择对各类机器学习算法和模型的影响 训练样本的优化 如何进行数据增强&#xff1f; 如何进行数据清洗&#xff1f; 样本的标注对各类机…

C语言每日一练之31

31 第三十一练 使用递归的方式求解第n位的斐波那契数列 要求: 1、输入整数n 2、输出第n位的斐波那契数列的值 第三十练答案 #include<stdio.h> int recur(int n) {if (n == 1)return 1;

数据结构(二)------单链表

制作不易&#xff0c;三连支持一下呗&#xff01;&#xff01;&#xff01; 文章目录 前言一.什么是链表二.链表的分类三.单链表的实现总结 前言 上一节&#xff0c;我们介绍了顺序表的实现与一些经典算法。 但是顺序表这个数据结构依然有不少缺陷&#xff1a; 1.顺序表指定…

导航页配置服务Dashy本地部署并实现公网远程访问

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起&#xff0c;形成自己的导航…

基于springboot宠物领养系统

摘要 随着社会的不断发展和人们生活水平的提高&#xff0c;宠物在家庭中的地位逐渐上升&#xff0c;宠物领养成为一种流行的社会现象。为了更好地管理和促进宠物领养的过程&#xff0c;本文基于Spring Boot框架设计和实现了一套宠物领养系统。该系统以用户友好的界面为特点&…

时序分析中的去趋势化方法

时序分析中的去趋势化方法 时序分析是研究随时间变化的数据模式的一门学科。在时序数据中&#xff0c;趋势是一种随着时间推移而呈现的长期变化趋势&#xff0c;去趋势化是为了消除或减弱这种趋势&#xff0c;使数据更具平稳性。本文将简单介绍时序分析中常用的去趋势化方法&a…

跟着cherno手搓游戏引擎【13】着色器(shader)

创建着色器类&#xff1a; shader.h:初始化、绑定和解绑方法&#xff1a; #pragma once #include <string> namespace YOTO {class Shader {public:Shader(const std::string& vertexSrc, const std::string& fragmentSrc);~Shader();void Bind()const;void Un…

怎样自行搭建幻兽帕鲁游戏联机服务器?

幻兽帕鲁是一款深受玩家喜爱的多人在线游戏&#xff0c;为了获取更好的游戏体验&#xff0c;许多玩家希望能够自行搭建幻兽帕鲁游戏联机服务器&#xff0c;本文将指导大家如何自行搭建幻兽帕鲁游戏联机服务器。 自行搭建幻兽帕鲁游戏联机服务器&#xff0c;阿里云是一个不错的选…

了解云原生

一.什么是云原生 云原生是一种构建和运行程序的方法。云原生(Cloud Native&#xff09;是一个组合词&#xff0c;Cloud Native。Cloud表示应用程序位于云中&#xff0c;而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境。 二.云原生四要素 1.微服务 和微服…

结构体的增删查改

结构体&#xff0c;是为了解决生活中的一些不方便利用c语言自带数据类型来表示的问题。例如表示一个学生&#xff0c;那么学生这个个体假如用c语言自带数据类型怎么表示呢。可以使用名字&#xff0c;也就是字符数组&#xff1b;也可以使用学号&#xff0c;也就是int类型。但是这…

【解决方法】git pull报错ssh: connect to host github.com port 22: Connection timed out

问题 git pull ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository.解决方法 在C:\Users\username.ssh文件夹下新建config文件&#xff0c;填入以下文本&#xff08;如有则直接在文件最后一行新增&#xff09;&am…

iOS 面试 Swift基础题

一、Swift 存储属性和计算属性比较&#xff1a; 存储型属性:用于存储一个常量或者变量 计算型属性: 计算性属性不直接存储值,而是用 get / set 来取值 和 赋值,可以操作其他属性的变化. 计算属性可以用于类、结构体和枚举&#xff0c;存储属性只能用于类和结构体。存储属性可…

【AIGC】Diffusers:加载管道、模型和调度程序

前言 拥有一种使用扩散系统进行推理的简单方法对于&#x1f9e8;扩散器至关重要。扩散系统通常由多个组件组成&#xff0c;例如参数化模型、分词器和调度器&#xff0c;它们以复杂的方式进行交互。这就是为什么我们设计了 DiffusionPipeline&#xff0c;将整个扩散系统的复杂性…

检测头篇 | 原创自研 | YOLOv8 更换 SEResNeXtBottleneck 头 | 附详细结构图

左图:ResNet 的一个模块。右图:复杂度大致相同的 ResNeXt 模块,基数(cardinality)为32。图中的一层表示为(输入通道数,滤波器大小,输出通道数)。 1. 思路 ResNeXt是微软研究院在2017年发表的成果。它的设计灵感来自于经典的ResNet模型,但ResNeXt有个特别之处:它采用…

HiveSQL题——用户连续登陆

目录 一、连续登陆 1.1 连续登陆3天以上的用户 0 问题描述 1 数据准备 2 数据分析 3 小结 1.2 每个用户历史至今连续登录的最大天数 0 问题描述 1 数据准备 2 数据分析 3 小结 1.3 每个用户连续登录的最大天数(间断也算) 0 问题描述 1 数据准备 2 数据分析 3 小…

qt信号与槽机制及使用demo

要在 Qt 中将 rclcomm 类与 MainWindow 连接&#xff0c;并使用 rcl->pose_uids 中的项更新 comboBox_model&#xff0c;您可以按照以下步骤操作&#xff1a; 信号与槽机制&#xff1a;Qt 使用信号和槽机制来处理事件和对象间通信。您可以在 rclcomm 类中定义一个信号&#…

MySQL-窗口函数 简单易懂

窗口函数 考查知识点&#xff1a; • 如何用窗口函数解决排名问题、Top N问题、前百分之N问题、累计问题、每组内比较问题、连续问题。 什么是窗口函数 窗口函数也叫作OLAP&#xff08;Online Analytical Processing&#xff0c;联机分析处理&#xff09;函数&#xff0c;可…