刷leetcode hot100返航必胜版--链表6/3

article/2025/6/8 14:46:37

链表初始知识

链表种类:单链表,双链表,循环链表

 

链表初始化 

struct ListNode{

        int val;

        ListNode* next;

        ListNode(int x): val(x),next(nullptr) {}

};

//初始化
 

ListNode* head = new ListNode(5);

删除节点、添加节点 

考虑的边界

head==nullptr || head->next ==nullptr

处理链表的输入输出

// 本地测试代码 (main.cpp)
#include <iostream>
using namespace std;

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) {}
};

// 粘贴修正后的Solution类

int main() {
    // 创建链表 1->2->3->4->5
    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);

    
    Solution sol;
    ListNode* newHead = sol.reverseList(head);
    
    // 打印结果: 5->4->3->2->1
    while (newHead) {
        cout << newHead->val << " ";
        newHead = newHead->next;
    }
    return 0;
}

ListNode vs ListNode*

 

ListNode node;          // 创建默认节点 (val=0, next=nullptr)
ListNode node2(5);      // 创建 val=5 的节点
ListNode node3(10, &node); // 创建 val=10 并指向 node 的节点 

ListNode* ptr = new ListNode();    // 动态创建节点
ListNode* ptr2 = new ListNode(20); // 动态创建 val=20 的节点

1.相交链表【没想明白】6/31h

160. 相交链表 - 力扣(LeetCode)

问题:没看懂其实找的是指针相同/地址相同,而不是数值相同

法一:哈希表,找b中指针在不在a里

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {//好奇怎么样处理输入//请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null //暴力解forfor//我才看懂这个是地址相同不是val相同ListNode*a = headA;ListNode*b = headB;unordered_set<ListNode*>set;while(a!=nullptr){set.insert(a);a = a->next;}while(b!=nullptr){if(set.find(b)!=set.end()){return b;}b = b->next;}return nullptr;}
};

法二:类似数学发现

 

不相交:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {//好奇怎么样处理输入//请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null //暴力解forfor//我才看懂这个是地址相同不是val相同ListNode*a = headA;ListNode*b = headB;while(!(a==nullptr && b==nullptr)){if(a == b){return a;}if(a!=nullptr){a = a->next;}else{a = headB;}if(b!=nullptr){b = b->next;}else{b = headA;}}return nullptr;}
};

 2.反转链表【30min】

206. 反转链表 - 力扣(LeetCode)

/*** 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* reverseList(ListNode* head) {if(head == nullptr || head->next == nullptr){return head;}ListNode * p = head;ListNode * q = nullptr;ListNode * r;
//q,p,rwhile(p!=nullptr){r = p->next;p->next = q;q = p;p = r;}return q;     }
};

法二:递归【没咋看】

class Solution {public ListNode reverseList(ListNode head) {if (head == null || head.next == null) {return head;}ListNode newHead = reverseList(head.next);head.next.next = head;head.next = null;return newHead;}
}

 


http://www.hkcw.cn/article/cmZWxSowZr.shtml

相关文章

[概率论基本概念4]什么是无偏估计

关键词&#xff1a;Unbiased Estimation 一、说明 对于无偏和有偏估计&#xff0c;需要了解其叙事背景&#xff0c;是指整体和抽样的关系&#xff0c;也就是说整体的叙事是从理论角度的&#xff0c;而估计器原理是从实践角度说事&#xff1b;为了表明概率理论&#xff08;不可…

React-native之Flexbox

本文总结: 我们学到了 React Native 的 Flexbox 布局&#xff0c;它让写样式变得更方便啦&#xff01;&#x1f60a; Flexbox 就像一个有弹性的盒子&#xff0c;有主轴和交叉轴&#xff08;行或列&#xff09;。 在 RN 里写样式要用 StyleSheet.create 对象&#xff0c;属性名…

学习日记-day21-6.3

完成目标&#xff1a; 目录 知识点&#xff1a; 1.集合_哈希表存储过程说明 2.集合_哈希表源码查看 3.集合_哈希表无索引&哈希表有序无序详解 4.集合_TreeSet和TreeMap 5.集合_Hashtable和Vector&Vector源码分析 6.集合_Properties属性集 7.集合_集合嵌套 8.…

ABP-Book Store Application中文讲解 - Part 6: Authors: Domain Layer

ABP-Book Store Application中文讲解 - Part 6: Authors: Domain Layer 1. 汇总 ABP-Book Store Application中文讲解-汇总-CSDN博客 2. 前一章 ABP-Book Store Application中文讲解 - Part 5: Authorization-CSDN博客 项目之间的引用关系。 ​ BookAppService利用的是Cu…

智慧高铁站:数字时代交通枢纽的标杆

智慧高铁站作为现代综合交通体系的核心节点&#xff0c;通过数字技术与基础设施的深度融合&#xff0c;正在重塑旅客出行体验与车站运营模式。这一转型不仅体现在技术应用层面&#xff0c;更代表着交通服务理念的根本性变革&#xff0c;为现代交通枢纽建设树立了全新标杆。 一、…

ARM架构推理Stable Diffusiond

代码仓库&#xff1a; https://github.com/siutin/stable-diffusion-webui-docker.git Docker容器地址&#xff1a; https://hub.docker.com/r/siutin/stable-diffusion-webui-docker/tags git clone https://github.com/siutin/stable-diffusion-webui-docker.git cd stabl…

关于 KWDB 数据存储的几件事儿

邻近粽子节&#xff0c;KWDB 的朋友给我发消息&#xff0c;问我吃过红茶味的粽子没&#xff0c;作为北方人的我一般只吃蜜枣白粽&#xff0c;还没见过茶香粽子&#xff0c;顶多泡碗祁红&#xff0c;就着茶水吃粽子。 她又问道&#xff0c;两个月时间到了&#xff0c;你准备好了…

酵母杂交那些事儿(一)

酵母单杂、酵母双杂、酵母三杂&#xff0c;仅仅一个字的区别&#xff0c;你对它们了解吗&#xff1f;这些经常用到的实验&#xff0c;它们的原理你确定都搞清楚了吗&#xff1f;如果没有&#xff0c;那么今天你就来对地方了&#xff0c;因为伯远生物&#xff08;https://plant.…

sqlite3 命令行工具详细介绍

一、启动与退出 启动数据库连接 sqlite3 [database_file] # 打开/创建数据库文件&#xff08;如 test.db&#xff09; sqlite3 # 启动临时内存数据库 (:memory:) sqlite3 :memory: # 显式启动内存数据库文件不存在时自动创建不指定文件名则使用临时内…

项目开发:【悟空博客】基于SSM框架的博客平台

目录 一.导入 1.Spirng框架 2.SpirngMVC 二.项目介绍 &#xff08;一&#xff09;项目功能 &#xff08;二&#xff09;页面展示 1.注册页面 2.登录页面 3.列表页面 4.详情页面 5.编辑页面 三.准备工作 1.用户表——userinfo 2.文章表——articleinfo 3.插入数…

大话软工笔记—分离之组织和物品

一. 组织 组织在架构中既不属于“业务架构”&#xff0c;也不属于“管理架构”&#xff0c;它是由组织结构、角色、权限等要素构成。 1. 组织的概念 组织&#xff08;名词&#xff09;&#xff0c;将资源按照某个目标构建出一个有层次的集合体&#xff0c;即组织结构。 组织…

伊吖学C笔记(5、数组、表达式、考题设计)

一、数组 数组是由同一种类数据构成的集合。就好比一个班所有同学的身高&#xff0c;一个月的日平均气温&#xff0c;抽样调查的一百个数据...等等&#xff0c;都可以当作一个数组。构建数组是为了对同类的多个数据实行高效管理。 1.数组定义 格式&#xff1a;类型说明 数组…

由docker引入架构简单展开说说技术栈学习之路

想象一下&#xff0c;你开了一家线上小卖部&#xff08;单机版&#xff09;&#xff0c;突然爆单了怎么办&#xff1f;别急&#xff0c;技术架构的升级打怪之路&#xff0c;可比哆啦A梦的口袋还神奇&#xff01; 第1关&#xff1a;单枪匹马的创业初期&#xff08;单机架构&…

Dify知识库下载小程序

一、Dify配置 1.查看或创建知识库的API 二、下载程序配置 1. 安装依赖resquirements.txt ######requirements.txt##### flask2.3.3 psycopg2-binary2.9.9 requests2.31.0 python-dotenv1.0.0#####安装依赖 pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.…

Neovim - 打造一款属于自己的编辑器(一)

前言&#xff08;劝退&#xff09; neovim 是一个现代化&#xff0c;高扩展的 vim 编辑器 fork 版本&#xff0c;适合程序员打造极致高效的开发环境。 在正式开始 neovim 配置之前&#xff0c;我还是要劝退一下的。 很多人说使用 neovim 的都是变成高手&#xff0c;但我认为…

BugKu Web渗透之本地管理员

启动场景后&#xff0c;网页显示如下&#xff1a; 看起来似乎很多n。拷贝n到文件查看器&#xff0c;没有发现异常。 步骤一&#xff1a; 右键显示源码。 暂时没有发现异常。想着拷贝n到文件查看器&#xff0c;发现末尾有注释。 步骤二&#xff1a; 看见有“”&#xff0c;想…

配置cursor

介绍整体界面 上面的是功能菜单 **打开文件&#xff1a;**在打开A文件的情况下&#xff0c;再打开B文件&#xff08;再点击一次cursor&#xff0c;重新点击打开文件夹&#xff0c;选择文件B&#xff09; 打开最近文件 左侧界面 第一个是我们所有编程的文件 第二个是在项目里…

智能考核在消防员体能考核中有哪些应用?

一、训练方式的创新 个性化训练计划&#xff1a;借助智能考核系统&#xff0c;使消防员的训练更加个性化。系统依据消防员的体能、技能等数据&#xff0c;结合训练目标和历史表现&#xff0c;运用大数据分析和人工智能算法&#xff0c;为每位消防员生成专属的训练计划。如蚂蚁…

5分钟申请edu邮箱【方案本周有效】

这篇文章主要展示的是成果。如果你是第1次看见我的内容&#xff0c;具体的步骤请翻看往期的两篇作品。先看更正补全&#xff0c;再看下一个。 建议你边看边操作。 【更正补全】edu教育申请通过方案 本周 edu教育邮箱注册可行方案 #edu邮箱 伟大无需多言 我已经验证了四个了…

阿里云为何,一个邮箱绑定了两个账号

阿里云“幽灵账号”之谜&#xff1a;同一个邮箱注销后仍有两个账号&#xff1f;深度揭秘成因与终极解决方案&#xff01; 你是否曾在阿里云上使用同一个邮箱注册过多个账号&#xff0c;明明已经**“彻底”注销了其中一个**&#xff0c;却惊愕地发现系统里依然**“幽灵般”挂着…