diff --git a/problems/0206.翻转链表.md b/problems/0206.翻转链表.md index 1bff0b74..886bbfcd 100644 --- a/problems/0206.翻转链表.md +++ b/problems/0206.翻转链表.md @@ -103,24 +103,44 @@ public: Java: ```java +// 双指针 class Solution { public ListNode reverseList(ListNode head) { - if (head == null || head.next == null) return head; - ListNode last = head; - ListNode cur = head.next; - head.next = null; - while (cur.next != null) { - ListNode tmp = cur.next; - cur.next = last; - last = cur; - cur = tmp; + ListNode prev = null; + ListNode cur = head; + ListNode temp = null; + while (cur != null) { + temp = cur.next;// 保存下一个节点 + cur.next = prev; + prev = cur; + cur = temp; } - cur.next = last; - return cur; + return prev; } } ``` +```java +// 递归 +class Solution { + public ListNode reverseList(ListNode head) { + return reverse(null, head); + } + + private ListNode reverse(ListNode prev, ListNode cur) { + if (cur == null) { + return prev; + } + ListNode temp = null; + temp = cur.next;// 先保存下一个节点 + cur.next = prev;// 反转 + // 更新prev、cur位置 + prev = cur; + cur = temp; + return reverse(prev, cur); + } +} +``` Python: