- 2025-01-07141.环形链表 & 142.环形链表II
141.环形链表&142.环形链表II141.环形链表思路:快慢指针or哈希表快慢指针代码:classSolution{public:boolhasCycle(ListNode*head){if(head==nullptr||head->next==nullptr)returnfalse;ListNode*fast=head->next;//不能设
- 2025-01-07面试经典150题——链表(二)
文章目录1、删除链表的倒数第N个结点1.1题目链接1.2题目描述1.3解题代码1.4解题思路2、删除排序链表中的重复元素II2.1题目链接2.2题目描述2.3解题代码2.4解题思路3、旋转链表3.1题目链接3.2题目描述3.3解题代码3.4解题思路4、分隔链表4.1题目链接4.2
- 2025-01-06142环形链表
最简单的思路:哈希。进阶那个快慢指针确实想不到。//哈希,空间为O(n)classSolution{public:ListNode*detectCycle(ListNode*head){unordered_set<ListNode*>adds;if(head==nullptr)returnNULL;ListNode*cur=head;
- 2025-01-04160链表相交
哈希肯定是能解的,就想着有没有其他方法。最开始的思路是翻转链表,然后再来找相交结点,但是题目要求不能改链表结构。官方题解的第二种方法确实巧妙,如果有相交结点的话最多通过两次遍历就一定能找到,因此。在分析中,其实我们也可以把两个不相交的链表看做相交,但是相交结点为nullptr代
- 2025-01-0419删除链表的倒数第n个结点
正常思路,先遍历一遍链表得到长度,然后进行第二次遍历得到待删除结点的上一个结点classSolution{public:ListNode*removeNthFromEnd(ListNode*head,intn){ListNode*dummyHead=newListNode(0);dummyHead->next=head;ListNode*cur=
- 2025-01-0324 两两交换链表中的节点
思路简单,但是操作的时候还是要注意细节,特别是某些结点的next指针变化需要格外关注,报了很多次错。因为没注意到:每次替换两个结点后,应该让当前的后面的结点指向下两个结点的靠后一点的结点。主要还是画完图后没有走一遍链表classSolution{public:ListNode*swapPairs(List
- 2025-01-03编程题-删除排序链表中的重复元素
题目:给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回已排序的链表 。解题由于给定的链表是排好序的,因此重复的元素在链表中出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。本题较为简单,笔者不做过多解释,
- 2025-01-02206翻转指针
使用双指针法,注意一下更新左右指针的顺序就好了。这里还要注意一下终止条件,画个图就行了。leetcode里面头节点就是第一个存储数据的节点,没有虚拟头节点classSolution{public:ListNode*reverseList(ListNode*head){ListNode*left;ListNode*right;
- 2025-01-01链表算法篇——链接彼岸,流离节点的相遇之诗(上)
文章目录前言第一章:链表的意境——节点的孤岛与连接的艺术第二章:链表算法的流动美学第三章:两数相加3.1题目链接:https://leetcode.cn/problems/add-two-numbers/description/3.2题目分析:3.3思路讲解:3.4代码实现:第四章:两两交换链表中的节点4.1题目链接:https://leetc
- 2025-01-01代码随想录打卡 Day 2
代码随想录打卡Day21.链表的定义与操作链表作为基本的数据结构类型,其主要形式有三种:单链表双链表循环链表由于刷代码题平时在OJ上默认定义已经给出,可以直接使用。而在面试/机试时,一般需要需要自己手写链表。因此,正确写出链表的定义是非常有必要的。一个单链表的
- 2024-12-30【Leetcode_Hot100】链表
链表160.相交链表206.反转链表234.回文链表141.环形链表142.环形链表II21.合并两个有序链表2.两数相加19.删除链表的倒数第N个结点25.K个一组翻转链表138.随机链表的复制148.排序链表23.合并K个升序链表146.LRU缓存160.相交链表方法一:模拟依
- 2024-12-29876. 链表的中间结点
题目如下:https://leetcode.cn/problems/middle-of-the-linked-list/description/Java代码如下:`classListNode{intval;ListNodenext;ListNode(){}ListNode(intval){this.val=val;}ListNode(intval,ListNodenext){this.val=val;this.next=next;}}
- 2024-12-29每日算法----链表相交(Java)
双指针需要找到相交节点,特殊情况两个链表在相交前的节点个数是相同的,这种情况我们只需用两个指针同时遍历两个链表,当currA==currB时,此时就找到了相交节点。从这个特殊情况可以看出来,我们需要两个链表在相交前的节点个数是相同的,对于两个相交节点不同的情况,当链表A遍历完后,我
- 2024-12-29每日算法----环形链表II(Java)
本题在上个环形链表的基础上增加了难度,让找其环形链表的第一个节点还是原先的思路,定义快慢指针在第一次快慢指针相等时,a是到环形前的节点个数,k是离环形节点有多远快指针走了a+n圈环形+k慢指针走了a+m圈环形+k此时快指针走的路程是慢指针2倍。慢指针=快指针-慢指针=n圈
- 2024-12-29每日算法----环形链表(Java)
快慢指针慢指针一次走一步,快指针一次走两步,环形链表,最后一定会碰到。publicclassA06hasCycle{publicbooleanhasCycle(ListNodehead){ListNodeslow=head;//慢指针ListNodefast=head;//快指针//快指针不为null且下一个节点
- 2024-12-29十道OJ题帮你深入认识链表
好了,之前我们写过单链表的文章,现在我们就通过OJ题的分析,对链表的认识更加充分! 题目一:删除链表中等于给定值val的所有节点203.移除链表元素-力扣(LeetCode)代码:structListNode*removeElements(structListNode*head,intval){structListNode*cur=head;
- 2024-12-29LeetCode 82:删除排序链表中的重复元素 II
题目:方法一:方法二:代码示例packagecom.zy.leetcode.LeetCode_82;/***@Author:zy*@Date:2024-12-26-10:51*@Description:*.删除排序链表中的重复元素II*/publicclassListNode_82{privateintval;privateListNode_82next;
- 2024-12-28LeetCode 23 : 合并K个升序链表
题目:解题思路:1.将多个链表合并为两个链表2.使用21题用的,将两个有序链表合并代码示例:packagecom.zy.leetcode.LeetCode_23;/***@Author:zy*@Date:2024-12-26-21:37*@Description:合并K个升序链表*多路递归*/publicclassListNode_23{priv
- 2024-12-26数据结构--双向循环链表
之前我们写过了单链表的博文了,我们发现这是不是找头找尾有点麻烦啊。这里让我们来引入是双向带头的循环的链表。双向循环链表至此,正文开始:首先让我们来区分什么几种类型:类型单向链表,双向链表,带头/不带头,循环/不循环1.单向链表2.双向链表: 3.带头/不带头4.循环/非
- 2024-12-26【8.5】链表-删除排序链表中的重复元素
一、题目 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回已排序的链表 。示例1:输入:head=[1,1,2]输出:[1,2]示例2:输入:head=[1,1,2,3,3]输出:[1,2,3]提示:链表中节点数目在范围[0,300]内-100<=No
- 2024-12-25算法刷题_链表篇
算法刷题Day8_链表相交文章目录算法刷题Day8_链表相交@[TOC](文章目录)前言一、求出两个链表的长度和差值二、让其中较长一个链表移动到和第二链表对齐的位置三、其他解法_双指针法:总结前言简单来说,就是求两个链表交点节点的指针。一、求出两个链表的长度和差值
- 2024-12-24每日一算法----设计链表(java)
classMyLinkedList{staticclassListNode{intval;intindex;ListNodeprev;ListNodenext;publicListNode(intval,intindex,ListNodeprev,ListNodenext){this.val=val;this.in
- 2024-12-23算法刷题Day7_翻转链表
算法刷题Day7_单链表相关操作文章目录算法刷题Day7_单链表相关操作前言一、反转链表二、两两交换链表中的节点1.递归法2.迭代法总结前言提示:以下是本篇文章正文内容,下面案例可供参考一、反转链表classSolution{public:ListNode*reverseList(ListNode
- 2024-12-23算法刷题_删除链表的倒数第N个结点
算法刷题Day8_删除链表的倒数第N个结点文章目录算法刷题Day8_删除链表的倒数第N个结点前言一、双指针思想二、具体步骤1.定义快慢指针2.fast指针先移动n+1步3.fast和slow一起移动4.删除倒数第N个节点三、完整代码总结前言一、双指针思想双指针的经典应用,如果
- 2024-12-23合并 K 个升序链表(归并排序)
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例1:输入:lists=[[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->