![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
IDEA_TEYU_1112
其实吧压力也没那么大
展开
-
Leetcode刷题java之23. 合并K个排序链表(一天一道编程题之四十天)(优先队列)
执行结果:通过显示详情执行用时 :5 ms, 在所有 Java 提交中击败了62.48% 的用户内存消耗 :41.8 MB, 在所有 Java 提交中击败了55.30%的用户题目:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: ...原创 2020-03-31 18:51:47 · 224 阅读 · 0 评论 -
Leetcode刷题java之146. LRU缓存机制(一天一道编程题之三十三天)
执行结果:通过显示详情执行用时 :29 ms, 在所有 Java 提交中击败了41.46% 的用户内存消耗 :53.5 MB, 在所有 Java 提交中击败了71.48%的用户题目:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (ke...原创 2020-03-30 16:10:42 · 266 阅读 · 0 评论 -
Leetcode刷题java之328. 奇偶链表(一天一道编程题之二十八天)
执行结果:通过显示详情执行用时 :0 ms, 在所有 Java 提交中击败了100.00% 的用户内存消耗 :40.9 MB, 在所有 Java 提交中击败了5.23%的用户题目:328. 奇偶链表难度中等143给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算...原创 2020-03-19 12:02:26 · 237 阅读 · 0 评论 -
Leetcode刷题java之138. 复制带随机指针的链表(一天一道编程题之第十五天)
执行结果:通过显示详情执行用时 :0 ms, 在所有 Java 提交中击败了100.00% 的用户内存消耗 :41.1 MB, 在所有 Java 提交中击败了5.05%的用户题目:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点...原创 2020-03-06 09:59:09 · 263 阅读 · 0 评论 -
Leetcode刷题java之142. 环形链表 II
执行结果:通过显示详情执行用时 :0 ms, 在所有 Java 提交中击败了100.00% 的用户内存消耗 :37.5 MB, 在所有 Java 提交中击败了5.03%的用户题目:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos ...原创 2020-02-07 12:28:35 · 178 阅读 · 0 评论 -
Leetcode刷题java之2. 两数相加
执行结果:通过显示详情执行用时 :2 ms, 在所有 Java 提交中击败了99.97% 的用户内存消耗 :44.9 MB, 在所有 Java 提交中击败了18.52%的用户题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它...原创 2020-02-04 11:48:21 · 288 阅读 · 0 评论 -
Leetcode刷题java之19. 删除链表的倒数第N个节点
执行结果:通过显示详情执行用时 :1 ms, 在所有 Java 提交中击败了64.16% 的用户内存消耗 :35 MB, 在所有 Java 提交中击败了19.08%的用户题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表...原创 2020-02-04 10:27:33 · 322 阅读 · 0 评论 -
Leetcode刷题java之147. 对链表进行插入排序
执行结果:通过显示详情执行用时 :4 ms, 在所有 Java 提交中击败了96.70% 的用户内存消耗 :37.4 MB, 在所有 Java 提交中击败了76.87%的用户题目:对链表进行插入排序思路:其实和数组的插入排序是类似的,只不过,链表只能next,所以遍历后面元素的时候,都要从最开始的位置一个一个比较。而不是从临近的位置一个一个比较。另外,链表的题不...原创 2020-02-02 12:16:27 · 424 阅读 · 1 评论 -
Leetcode刷题java之148. 排序链表
执行结果:通过显示详情执行用时 :3 ms, 在所有 Java 提交中击败了99.35% 的用户内存消耗 :39.6 MB, 在所有 Java 提交中击败了82.17%的用户题目:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例...原创 2020-02-02 11:30:12 · 213 阅读 · 0 评论 -
牛客网刷题java之在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路:代码:/* public class ListNode { int val; ListNode next = null; ...原创 2019-05-15 13:54:11 · 1178 阅读 · 3 评论 -
牛客网刷题java之输入一个链表,输出该链表中倒数第k个结点。
题目:牛客网刷题java之输入一个链表,输出该链表中倒数第k个结点。代码与分析:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*//*思路:首先判断直接不可以的情况,head为空不可...原创 2019-05-14 11:06:13 · 810 阅读 · 0 评论 -
牛客网刷题java之输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:代码需要注意的地方:导入包判断为空while((!stac...原创 2019-05-16 09:36:29 · 1190 阅读 · 0 评论 -
牛客网刷题java之输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。代码:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Sol...原创 2019-05-14 20:59:11 · 714 阅读 · 1 评论 -
牛客网刷题java之输入一个链表,反转链表后,输出新链表的表头。
题目:输入一个链表,反转链表后,输出新链表的表头。思路:代码:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { publi...原创 2019-05-14 20:38:21 · 1596 阅读 · 2 评论 -
牛客网刷题java之输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
牛客网刷题java之输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* ...原创 2019-05-12 19:23:16 · 1065 阅读 · 3 评论 -
牛客网刷题java之输入两个链表,找出它们的第一个公共结点。
题目:输入两个链表,找出它们的第一个公共结点。思路:设 A 的长度为 a + c,B 的长度为 b + c,其中 c 为尾部公共部分长度,可知 a + c + b = b + c + a。当访问链表 A 的指针访问到链表尾部时,令它从链表 B 的头部重新开始访问链表 B;同样地,当访问链表 B 的指针访问到链表尾部时,令它从链表 A 的头部重新开始访问链表 A。这样就能控制访问...原创 2019-05-29 09:07:03 · 879 阅读 · 2 评论 -
牛客网刷题java之输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路:第一步,在原节点后面创建一个相同的节点,其实就是链表插入的过程第二步,遍历克隆的节点,让它的random等于原来的随机的next,也就是下一个节点...原创 2019-05-17 09:27:05 · 1958 阅读 · 2 评论 -
牛客网刷题java之给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路:使用双指针,一个指针 fast 每次移动两个节点,一个指针 slow 每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上。假设相遇点在下图的 z1 位置,此时 fast 移动的节点数为 x+2y+z,slow 为 x+y,由于 fast 速度比 slow 快一倍,因此 x+2y+z=...原创 2019-05-30 16:38:46 · 785 阅读 · 0 评论 -
Leetcode刷题java之237. 删除链表中的节点
执行结果:通过显示详情执行用时 :1 ms, 在所有Java提交中击败了80.68%的用户内存消耗 :36.6 MB, 在所有Java提交中击败了54.27%的用户题目:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 --head =[4,5,1,9],它可以表示为:示例 1:输入: he...原创 2019-08-20 19:07:38 · 234 阅读 · 0 评论 -
Leetcode刷题java之206. 反转链表
执行结果:通过显示详情执行用时 :1 ms, 在所有Java提交中击败了86.19%的用户内存消耗 :36.5 MB, 在所有Java提交中击败了55.65%的用户题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可...原创 2019-08-20 19:33:08 · 280 阅读 · 0 评论 -
Leetcode刷题java之876. 链表的中间结点
执行结果:通过显示详情执行用时 :0 ms, 在所有Java提交中击败了100.00%的用户内存消耗 :34.6 MB, 在所有Java提交中击败了40.02%的用户题目:给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列...原创 2019-08-20 19:57:28 · 260 阅读 · 0 评论 -
Leetcode刷题java之21. 合并两个有序链表(递归和迭代)
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-list...原创 2019-08-22 10:34:38 · 680 阅读 · 0 评论 -
Leetcode刷题java之83. 删除排序链表中的重复元素
执行结果:通过显示详情执行用时 :2 ms, 在所有Java提交中击败了79.04%的用户内存消耗 :37.3 MB, 在所有Java提交中击败了49.90%的用户题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->...原创 2019-08-22 11:08:48 · 191 阅读 · 0 评论 -
Leetcode刷题java之83. 删除排序链表中的重复元素
执行结果:通过显示详情执行用时 :2 ms, 在所有Java提交中击败了78.54%的用户内存消耗 :37.8 MB, 在所有Java提交中击败了41.14%的用户题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->...原创 2019-08-22 11:16:33 · 343 阅读 · 0 评论 -
Leetcode刷题java之160. 相交链表
执行结果:通过显示详情执行用时 :2 ms, 在所有Java提交中击败了96.27%的用户内存消耗 :47.9 MB, 在所有Java提交中击败了7.57%的用户题目:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。思路:可以发现a+c+b=b+c+a,也就是说,两个链表同时循环,到末尾之后就等于另一个链表的...原创 2019-08-22 18:58:51 · 321 阅读 · 0 评论 -
Leetcode刷题java之141. 环形链表
执行结果:通过显示详情执行用时 :1 ms, 在所有Java提交中击败了94.43%的用户内存消耗 :40.1 MB, 在所有Java提交中击败了41.65%的用户题目:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。来源:力扣(...原创 2019-08-22 19:29:18 · 403 阅读 · 1 评论 -
Leetcode刷题java之203. 移除链表元素
执行结果:通过显示详情执行用时 :2 ms, 在所有Java提交中击败了93.30%的用户内存消耗 :43.7 MB, 在所有Java提交中击败了64.12%的用户题目:删除链表中等于给定值val的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3-&...原创 2019-08-22 20:20:14 · 403 阅读 · 0 评论 -
Leetcode刷题java之234. 回文链表
执行结果:通过显示详情执行用时 :2 ms, 在所有Java提交中击败了96.44%的用户内存消耗 :45.1 MB, 在所有Java提交中击败了42.09%的用户题目:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n)...原创 2019-08-24 09:19:39 · 241 阅读 · 0 评论