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