赞
踩
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
输入:head = [1,2,3,4]
输出:[2,1,4,3]
输入:head = []
输出:[]
输入:head = [1]
输出:[1]
提示:
/**
* @param {ListNode} head
* @return {ListNode}
*/
var swapPairs = function(head) {
if(!head||!head.next)return head;
let next=head.next;
head.next=swapPairs(next.next);
next.next=head;
return next;
};
/** * @param {ListNode} head * @return {ListNode} */ var swapPairs = function(head) { if(!head||!head.next)return head; let pre=new ListNode(0); pre.next=head; let temp=pre; while(temp.next!=null && temp.next.next !=null){ let start=temp.next; let end=temp.next.next; temp.next=end; start.next=end.next; end.next=start; temp=start; } return pre.next; };
Tip
相对来说 更喜欢递归写法,但对于新手来说非递归写法更易理解。当然非递归写法理解清楚之后再去理解递归会更轻松些。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。