leetcode-链表
文章平均质量分 88
爱得恋
这个作者很懒,什么都没留下…
展开
-
Leetcode——146. LRU 缓存机制
题目描述:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key):如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value):如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数原创 2021-02-26 15:44:29 · 249 阅读 · 0 评论 -
Leetcode-707:设计链表(单链表、双链表)
题目描述:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将原创 2020-10-28 16:00:34 · 167 阅读 · 0 评论 -
Leetcode 21-合并两个有序链表
这个题常规思路确实很简单,但是在考虑递归写法的时候,我又一次被打击了,真的就是一看就会,一写就废的那种!!!题目描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路一:最常规的思路:遍历两个链表,比对每一个节点,每次将节点值较小的串起来,思路很简单,代码人很容易。代码:class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(原创 2020-10-25 19:58:40 · 104 阅读 · 0 评论 -
Leetcode-138:复制带随机指针的链表(两种方法)
题目描述:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。思路:本题要求深拷贝给定的链表,并且给定链表的每个节点都带有随机指针域。节点的拷贝很原创 2020-10-11 17:55:30 · 225 阅读 · 0 评论 -
环形链表 III (求链表中环的长度)
题目描述:计算一个链表中环的长度。分析:首先,我们可以通过判断链表中是否有环的方法找到快慢指针的相遇点(见下图)。博客: leetcode-141:环形链表 I (判断链表中是否有环).然后,在寻找链表中环的入口方法时,我们采用让其中一个指针指向链表头,另一个指针处于原位置不动,一人一步走就找到了链表中环的入口。这是因为slow指针从链表头到环入口的距离A=fast指针到环入口的距离B。博客:Leetcode-142. 环形链表 II (寻找链表中环的入口).因此,我们可以发现:距离A=原创 2020-10-09 10:41:24 · 3212 阅读 · 4 评论 -
Leetcode-142. 环形链表 II (寻找链表中环的入口)
题目描述:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。思路:上一篇博客已经知道了怎末判断链表中是否有环(博客链接: https://blog.csdn.net/yuiop123455/article/details/108756602.),在这个基础上我们这道题需要找出这个环的入口。方法如下原创 2020-10-09 09:44:06 · 464 阅读 · 2 评论 -
leetcode-141:环形链表 I (判断链表中是否有环:两种方法)
题目描述:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。分析:我们直到如果这个链表有环了,相当于我们用一个引用让一步一步走,这个引用是没有结尾的(就是永远走不原创 2020-09-23 17:11:05 · 350 阅读 · 0 评论 -
反转单链表(Java)
题目描述:本题源于leetcode上面试题26定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路:该题有两种效率比较好的解法:1.头插法:这是一种常见的反转单链表的解法---》先定义一个新的头节点,然后让原始链表从前往后遍历单链表,依次头插到新的链表头。这样就得到了反转后的链表。2.三引用法:原创 2020-05-23 00:04:21 · 227 阅读 · 0 评论 -
leetcode:两个链表的第一个公共节点(两种方法)
题目描述: 求两个链表的第一个公共节点输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。题解一:我们先来分析一下这个题目,求两个链表的公共节点,对于这个问题我们一般都会设置两个引用分别指向两个链表头,然后遍历链表直到相遇,但是什么情况就能相遇呢?由上图所示,我们分别设A链表非公共部分的节点长度为a,B链表公共节点的长度是b,A、B链表公共部分为c.当引用cur1从A链表的头节点开始向后走,引用cur2从B链表的头节点开始向后走,直到走到末尾,发现此时cur1和原创 2020-09-23 15:05:03 · 1117 阅读 · 0 评论