给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
迭代解法
这道题很基础,不难,需要明白的就是背后的逻辑,
在我自己的想法就是,一定要保证的是交换两个节点调度前后节点不能丢失。那么就一定得知道交换节点前一节点的前一节点
0->1->2->3
要交换1和2,那么先断开0和1,0.next = 1.next
此时 0->2 1->2->3,这个时候没有让0丢失
接着要做的事就是,保留后一节点的值,那么 1.next = 2.next
此时 0->2 1->3 2->3
最后就是断开2和3,让2和1相连,那么 2.next = 1
此时 0->2->1->3 交换完成
然后将哑节点置成1节点,接着做同一件事
下面是我的代码
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode dummy = new ListNode(0);