题目要求
Given a linked list, swap every two adjacent nodes and return its head.
For example,
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.
翻译过来就是:将链表中相邻两个节点交换顺序,并返回最终的头节点。
思路
这题的核心解题思路在于如何不占用额外的存储空间,就改变节点之间的关系。我们设置了一个节点pre,为当前一个节点的前一个节点
public ListNode swapPairs(ListNode head) {
ListNode start = new ListNode(0);
start.next = head;
ListNode pre = start;
while(head!=null && head.next!=null){
pre.next = head.next;
head.next = pre.next.next;
pre.next.next = head;
pre = pre.next.next;
head = pre.next;
}
return start.next;
}
想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。