leetcode链表
Tim_Coder
这个作者很懒,什么都没留下…
展开
-
138. 复制带随机指针的链表
题目:知识提要:①浅拷贝:创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址 ,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。即修改拷贝的新对象会影响原始对象。②深拷贝:将一个对象从内存中完整的拷贝一份出来,在堆内存中开辟一个新的区域存放新的对象。即修改拷贝的新对象不会影响原始对象。思路:①在原始链表的每个节点之后添加该节点的副本②循环原始链表的每个节点的random,若其有值则添加给复制的节原创 2020-11-30 16:08:40 · 55 阅读 · 0 评论 -
2.两数相加
题目:思路:从左往右做加减法,但是右边是高位思路简单,注意实现细节/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { thi原创 2020-11-28 17:48:31 · 63 阅读 · 0 评论 -
328. 奇偶链表
题目:思路:分为奇偶两条链来处理,最后将奇数链尾部与偶数链头部连接即可代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next)原创 2020-11-28 11:29:28 · 77 阅读 · 0 评论 -
160. 相交链表
题目:思路:①若两条链表有交点的话,交点及以后的链表段必然相等(不考虑X型这样的相交),设链表A长度为a+m, 链表B长度为b+m②此时要做的是就是消除前半段的长度差,所以当A/B链表的指针指向自己的尾部时,使其开始遍历B/A(对方的链表),相交且不为null时即为起始节点,若相交但为null时则没有交点代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * Li原创 2020-11-27 10:03:12 · 116 阅读 · 0 评论 -
142. 环形链表--判断链表是否有环并返回链表开始入环的第一个节点
题目:思路:快慢指针法判断链表是否有环①快指针每次移动两个单位,慢指针移动一个单位,若链表有环,快慢指针必然相遇②如何确定链表开始入环的第一个节点?同样是快慢指针:当两个指针第一次相遇时,fast = 2 * slow = a + kn(n为链表环中节点的个数)slow = a + bn所以slow = (k-b)n而 fast = 2(k-b)n也就是说此时两个指针相当于各自绕环走了好几圈重点:如果让指针从链表头部一直向前走并统计步数k,那么所有走到链表入口节点时的步数 是原创 2020-11-26 20:12:04 · 159 阅读 · 0 评论