链表
文章平均质量分 58
earlene_wyl
这个作者很懒,什么都没留下…
展开
-
leetcode 460. LFU 缓存 hard
leetcode460. LFU 缓存 hard 题目描述:请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。实现 LFUCache 类:LFUCache(int capacity) - 用数据结构的容量capacity 初始化对象int get(int key)- 如果键存在于缓存中,则获取键的值,否则返回 -1。void put(int key, int value)- 如果键已存在,则变更其值;如果键不存在,请插入键值对。当缓存达到其容量时,则应该在...原创 2021-12-12 12:34:38 · 298 阅读 · 0 评论 -
leetcode 725. 分隔链表 meidum
leetcode725. 分隔链表meidum题目描述:给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。这 k 个部分应该按照在链表中出现的顺序排列,并且排在前面的部分的长度应该大于或等于排在后面的长度。返回一个由上述 k 部分组成的数组。解题思路:模拟这个过程即可代码:///** * Defi...原创 2021-11-04 18:47:36 · 151 阅读 · 0 评论 -
leetcode 234. 回文链表 easy
leetcode234. 回文链表easy题目描述:给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。解题思路:快慢指针找到中间位置, 右半区逆序, 比较完之后再恢复回来代码:///** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li...原创 2021-11-04 14:21:45 · 94 阅读 · 0 评论 -
leetcode 143. 重排链表 medium
leetcode143. 重排链表medium题目描述:给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0→ L1→ … → Ln-1→ Ln请将其重新排列后变为:L0→Ln→L1→Ln-1→L2→Ln-2→ …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。解题思路:寻找链表中点 + 链表逆序 + 合并链表代码:/** * Definition for singly-linked list....原创 2021-11-03 11:32:41 · 206 阅读 · 0 评论 -
单向链表相交的一系列问题
单向链表相交的一系列问题问题描述总体代码1.有无环及入口2. 2个无环相交3. 2个有环相交全部代码问题描述两个单向链表,求第一个相交的点,实际这是3个问题!!!怎么判断 1个链表是否有环 并找到环的入口怎么找到2个无环单链表第一个相交的节点怎么找到2个有环单链表第一个相交的节点tips: (假如一个有环,一个无环,两个单向链表(因为是单向链表)不可能相交)总体代码先判...原创 2019-07-23 01:35:52 · 192 阅读 · 0 评论 -
leetcode 148. 排序链表 medium (重要)
leetcode148. 排序链表 medium (重要) 题目描述:在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4解题思路:方法1:递归版归并排序 时间O(nlogn) 空间O(logn)主要就是在so...原创 2019-08-09 01:48:04 · 191 阅读 · 0 评论 -
leetcode 2 && 445 . 两数相加 medium
leetcode2. 两数相加 medium 题目描述:给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -&...原创 2019-08-09 14:55:43 · 227 阅读 · 0 评论 -
leetcode 328. 奇偶链表 easy
leetcode328. 奇偶链表 easy 题目描述:给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。说明:应当保持奇数节点和偶数节点的相对顺序。 链表...原创 2019-08-09 15:10:48 · 96 阅读 · 0 评论 -
leetcode 203. 移除链表元素 easy
leetcode203. 移除链表元素 easy 题目描述:删除链表中等于给定值val的所有节点。解题思路:简单题,dummy头节点代码:class Solution {public: ListNode* removeElements(ListNode* head, int val) { List...原创 2019-08-09 15:18:32 · 222 阅读 · 0 评论 -
刷题(1)-链表
链表1.基本1.1套路1.2基本操作(表示,插入,删除)2. 反转链表题目描述a) 迭代思路代码1.基本1.1套路笔试中,不用在意空间复杂度,各种辅助结构直接上,越快写出越好面试中,追求时间复杂度O(n)空间复杂度O(1)1.2基本操作(表示,插入,删除)struct listnode{ int val; listnode *next; listnode(int _val,l...原创 2019-09-05 02:38:34 · 1973 阅读 · 1 评论 -
leetcode 146. LRU缓存机制 medium (重要)
leetcode146. LRU缓存机制 medium (重要) 题目描述:运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, valu...原创 2019-08-22 17:47:28 · 195 阅读 · 1 评论 -
leetcode 61. 旋转链表 medium
leetcode61. 旋转链表 medium 题目描述:给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。示例1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1...原创 2019-08-08 23:34:52 · 105 阅读 · 0 评论 -
leetcode 83 &&82删除排序链表中的重复元素(1和2)
leetcode83. 删除排序链表中的重复元素 easy 题目描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。解题思路:从前往后扫描整个链表,如果一个节点和其后继节点相同,则直接删除后继节点,否则指针移动到后继节点。代码:class Solution {public: ListNode* deleteDuplica...原创 2019-08-08 22:47:14 · 127 阅读 · 0 评论 -
leetcode 19. 删除链表的倒数第N个节点 medium
leetcode19. 删除链表的倒数第N个节点medium 题目描述:给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。解题思路:双指针。首先为了避免讨论要删除头节点,先加一个dummy节点,然后快指针先走n步,再快慢指针同时前进,最后快指针先指向最后一个节点,慢指针指向倒数第n+1个节点。代码:class Solution ...原创 2019-08-08 22:12:47 · 115 阅读 · 0 评论 -
leetcode92. 反转链表 II medium(位置m到n)
leetcode92. 反转链表 IImedium 题目描述:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL解题思路...原创 2019-07-29 17:32:09 · 235 阅读 · 0 评论 -
leetcode160. 相交链表 easy
leetcode160. 相交链表 easy 题目描述:编写一个程序,找到两个单链表相交的起始节点。tips:两个无环单链表解题思路:2个无环单链表,假如相交,那只能是Y型的那么找的过程是链表1 遍历到结尾节点end1,同时记录总结点数len1链表2 遍历到结尾节点end2, 同时记录总结点数len2比较end1和end2,不相等返回nullp...原创 2019-07-29 19:57:51 · 145 阅读 · 0 评论 -
leetcode141. 环形链表 easy
leetcode141. 环形链表 easy 题目描述:给定一个链表,判断链表中是否有环。解题思路:快慢指针的经典应用。只需要设两个指针,一个每次走一步的慢指针和一个每次走两步的快指针,如果链表里有环的话,两个指针最终肯定会相遇代码:/** * Definition for singly-linked list. * struct ListNode {...原创 2019-07-29 20:12:20 · 134 阅读 · 0 评论 -
leetcode 142. 环形链表 II medium
leetcode142. 环形链表 II medium 题目描述:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。解题思路:同样快慢指针法,一个 慢指针p1每次走1步,一个快指针p2每次走2步,假如无环,快指针一定遇到终点也就是 next是nullptr,那直接返回nullptr,假如有环,那p1和p2肯定会在环中的某个位置相遇...原创 2019-07-29 20:20:34 · 115 阅读 · 0 评论 -
leetcode 86. 分隔链表 medium
leetcode86. 分隔链表 medium 题目描述:给定一个链表和一个特定值x,对链表进行分隔,使得所有小于x的节点都在大于或等于x的节点之前。你应当保留两个分区中每个节点的初始相对位置。解题思路:造两个头节点,less_head和more_head,最后别忘了more_ptr的处理(把它的next设为nullptr,这个很容易忘!!!...原创 2019-07-29 20:36:25 · 165 阅读 · 0 评论 -
leetcode 138. 复制带随机指针的链表 medium
leetcode138. 复制带随机指针的链表 medium 题目描述:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。解题思路:两种解法:1.哈希表存2.把链表double,设置指针,最后断开。//解法1: 哈希 时间O(n) 空间O(n) //两次遍历。第一次遍...原创 2019-07-29 21:43:46 · 176 阅读 · 0 评论 -
leetcode21. 合并两个有序链表 easy
leetcode21. 合并两个有序链表 easy 题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:就是简单的dummy头结点技巧代码:...原创 2019-07-29 21:54:58 · 137 阅读 · 0 评论 -
leetcode23. 合并K个排序链表 hard
leetcode23. 合并K个排序链表 hard 题目描述:合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。解题思路:两种方法的复杂度都是 O(nklogk)方法1:分治不停的对半划分,比如k个链表先划分为合并两个k/2个链表的任务,再不停的往下划分,直到划分成只有一个或两个链表的任务,开始合并。举个例子来说比如合并6个链表,...原创 2019-07-29 23:18:54 · 229 阅读 · 0 评论 -
leetcode 24. 两两交换链表中的节点 medium
leetcode24. 两两交换链表中的节点medium 题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.解题思路:用dummy节点技巧,and画个图,就...原创 2019-07-30 00:37:38 · 112 阅读 · 0 评论 -
leetcode 25.k个一组翻转链表 hard
leetcode 25.k个一组翻转链表hard 题目描述:给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1-&...原创 2019-07-30 00:37:25 · 393 阅读 · 0 评论 -
leetcode206. 反转链表 easy
leetcode206. 反转链表 easy 题目描述:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解题思路:基础题代码:/** * Defi...原创 2019-07-29 15:50:04 · 124 阅读 · 0 评论