题目:
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
1->2->3->4
2->1->4->3
思路:
首先需要建立pre、node1、node2和lat四个指针即可。
pre node1 node2 lat
h -> 1 -> 2 -> 3 -> 4
然后pre->next=node2;node2.next=node1;node1.next=lat
接着向前移4个指针;
java代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
if(head ==null || head.next==null) {
return head;
}
ListNode h = new ListNode(0);
ListNode pre = h;
h.next = head;
while (pre.next!=null && pre.next.next!=null) {
ListNode node1 = pre.next;
ListNode node2 = pre.next.next;
ListNode lat = node2.next; //有可能为null
pre.next = node2;
node2.next = node1;
node1.next = lat;
pre = node1;
}
return h.next;
}
}
由于水平有限,文章中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!
及时更新最新文章和学习资料,一起来学习:
标签:pre,null,ListNode,next,链表,node1,节点,node2,leetcode From: https://blog.51cto.com/u_6813689/6145102