Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
Given
1->2->3->4
, you should return the list as 2->1->4->3
.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
Solution:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode swapPairs(ListNode head) { ListNode dummy = new ListNode(0); dummy.next = head; ListNode previous = dummy; while(previous.next!=null && previous.next.next != null) { ListNode node1 = previous.next; ListNode node2 = previous.next.next; previous.next = node2; node1.next = node2.next; node2.next = node1; previous = node1; } return dummy.next; } }
No comments :
Post a Comment