链表题
IrvingTc
成功背后不是沧桑便是肮脏
展开
-
反转链表(Java)
题目描述将单链表反转解决迭代        每次将后一个节点的next指针指向前一个节点,要使用一个中间指针保存当前节点,避免出现内存泄漏代码: //迭代实现 public ListNode reverseList(ListNode head) { if (head == null || head.next == nu...原创 2019-03-14 10:39:33 · 187 阅读 · 0 评论 -
将链表相邻的两个节点反转(Java)
题目描述 给定一个链表,每两个相邻节点交换一次,并返回它的头部。 您不能修改列表节点中的值,只能修改节点本身。Example:Given 1->2->3->4, you should return the list as 2->1->4->3.原创 2019-03-14 10:51:51 · 2588 阅读 · 0 评论 -
判断链表是否有环
题目描述给定一个链表,判断它是否有一个循环解决使用一个辅助的集合,记录下每次走过的节点,每走到一个节点判断集合中是否已经存在该节点,存在说明有环,遍历到空节点说明无环代码: //1.使用辅助集合,记录以及走过的节点 public boolean hasCycle(ListNode head) { if(head == null || head.next ==...原创 2019-03-14 11:32:44 · 93 阅读 · 0 评论 -
合并两个有序链表(Java)
题目描述将两个有序链表合并成一个有序链表解决递归代码: //递归 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1 == null) return l2; if(l2 == null) return l1; if(l1.val < l2.val){...原创 2019-03-14 12:20:53 · 1923 阅读 · 0 评论 -
找到链表的中间节点(Java)
题目描述给定一个非空的单链表和头节点头,返回链表的中间节点。如果有两个中间节点,返回第二个中间节点。解决设置两个指针,一个快指针,每次走两步,一个慢指针,每次走一步,当快指针为空(偶数个节点)或者快指针的next指针指向空时(奇数个节点),此时慢指针即为中间节点代码: public ListNode middleNode(ListNode head) { ListNod...原创 2019-03-14 15:00:19 · 3662 阅读 · 0 评论