我最怕就是linkedlist的题,绕一绕就把我绕糊涂了。这个题比较简单,一共就两个节点换。
第一开始用recursion 的方法写了一下,顺利通过。
第二次用iterative的方法写了一下,出了点小问题。经改正顺利通过。
纯实现题,无思路可言。
Recursive
public ListNode swapPairs(ListNode head) {
if (head == null) return null;
else if (head.next == null) return head;
else {
ListNode nextHead = swapPairs(head.next.next);
ListNode temp = head.next;
head.next = nextHead;
temp.next = head;
return temp;
}
}
Iterative
public ListNode swapPairs(ListNode head) {
ListNode dummy = new ListNode(-1);
ListNode prev = dummy;
ListNode curr = head;
prev.next = head;
while (curr!=null && curr.next!=null){
ListNode nextHead = curr.next.next;
prev.next = curr.next;
curr.next.next = curr;
curr.next = nextHead;
prev = curr;
curr = nextHead;
}
return dummy.next;
}
No comments:
Post a Comment