LeetCode 206 反转链表。
// 示例:
// 输入: 1->2->3->4->5->NULL
//输出: 5->4->3->2->1->NULL
// 进阶:
//你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
法一:迭代
class Solution {
public ListNode reverseList(ListNode head) {
ListNode dummy = new ListNode(0);
dummy.next = head;
while (head!=null && head.next!=null) {
ListNode dnext = dummy.next;
ListNode next = head.next;
head.next = next.next;
dummy.next = next;
next.next = dnext;
}
return dummy.next;
}
}
法二:递归
class Solution {
public ListNode reverseList(ListNode head) {
if(head == null || head.next == null){
return head;
}
ListNode res = reverseList(head.next);
head.next.next = head;
head.next = null;
return res;
}
}
解析