leetcode刷题日记:160. Intersection of Two Linked Lists(相交链表

给出两个单链表的头结点headA与headB,让我们找出两个链表相接的起始节点,如果两个链表不存在相交结点返回null。 我们就先假设存在这样两个链表链表1与链表2,假设链表1的长度为 L 1 L_1 L1​和 L 2 L_2 L2​,假设对于两个链表,从相交的结点向后数长度为 L 1 , 2 L_{1,2} L1,2​,则在相交结点之前链表1的长度未 L 1 − L 1 , 2 L_1-L_{1...

数据结构与算法之美学习笔记:20 | 散列表(下):为什么散列表和链表经常会一起使用?

目录 前言LRU 缓存淘汰算法Redis 有序集合Java LinkedHashMap解答开篇 & 内容小结 前言 本节课程思维导图: 今天,我们就来看看,在这几个问题中,散列表和链表都是如何组合起来使用的,以及为什么散列表和链表会经常放到一块使用。 LRU 缓存淘汰算法 借助散列表,我们可以把 LRU 缓存淘汰算法的时间复杂度降低为 O(1)。现在,我们就来看看它是如何做到的。 首先,我们来回顾一...

一文搞懂双链表

前言前面有很详细的讲过线性表(顺序表和链表),当时讲的链表以单链表为主,但在实际应用中双链表有很多应用场景,例如大家熟知的LinkedList。 双链表与单链表区别单链表和双链表都是线性表的链式实现,它们的主要区别在于节点结构。单链表的节点包含数据字段 data 和一个指向下一个节点的指针 next,而双链表的节点除了 data 和 next,还包含指向前一个节点的指针 pre。这个区别会导致它们...

234. 回文链表 --力扣 --JAVA

题目 解题思路 判断链表是否为回文链表取决于链表中各个节点的值,所以可以通过存储各节点的值进行对比判断;链表的长度在遍历之前是无法获取的,所以使用list比链表相对好一点;回文链表是对称链表; 代码展示 class Solution { public boolean isPalindrome(ListNode head) { List<Integer> data = new ArrayList<>()...

【LeetCode刷题-链表】--876.链表的中间结点

876.链表的中间结点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { t...

【LeetCode刷题-链表】--203.移除链表元素

203.移除链表元素 方法:定义一个节点指向头节点head,避免头结点单独操作 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode...

【LeetCode刷题-链表】--82.删除排序链表中的重复元素II

82.删除排序链表中的重复元素II 由于链表是排好序的,所以只需要对其进行一次遍历即可,比较相邻节点对应的值 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = va...

【LeetCode刷题-链表】--146.LRU缓存

146.LRU缓存 方法一:哈希表+双向链表 使用一个哈希表和一个双向链表维护所有在缓存中的键值对 双向链表按照被使用的顺序存储了这些键值对,靠近头部的键值对是最近使用的,而靠近尾部的键值对是最久使用的哈希表即为普通的哈希映射,通过缓存数据的键映射到其在双向链表中的位置 这样以来,我们首先使用哈希表进行定位,找出缓存项在双向链表中的位置,随后将其移动到双向链表的头部,即可在O(1)的时间内完成get...

【剑指Offer】:删除链表中的倒数第N个节点(此题是LeetCode上面的)剑指Offer上面是链表中的倒数第K个节点

给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1] 在对链表进行操作时,一种常用的技巧是添加一个哑节点(dummy node),它的 next 指针指向链...

线性表操作的实现--单链表(链式存储结构)

目录 文章目录 前言 一、链表是什么? 二、具体实现 1.单链表的定义 2.初始化ListInitiate(SLNode **head) 3.求当前元素的个数ListLength(SLNode *head) 4.插入ListInsert(SLNode *head,int i,DataType x) 5.删除ListDelete(SLNode *head,int i,DataType *x) 6.取元...
© 2024 LMLPHP 关于我们 联系我们 友情链接 耗时0.016284(s)
2024-04-26 12:30:23 1714105823