leetcode-hot-100-24两两交换链表中的节点
目录
【leetcode hot 100 24】两两交换链表中的节点
解法一:先判断链表是否为空,若为空则直接返回;否则用 left
和 right
指向第一个和第二个节点,当这两个节点非空时一直执行交换。其中先判断 right.next==null
,说明链表为偶数且已经交换完 break
;再判断 right.next.next==null
,说明链表为奇数且已经交换完 break
;否则重新设置 left
和 right
继续循环。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
if (head == null){
return head;
}
ListNode left=head, right=head.next;
while(left!=null && right!=null){
int temp = left.val;
left.val = right.val;
right.val = temp;
if(right.next==null){
break;
}
if(right.next.next==null){
break;
}
left = right.next;
right = left.next;
}
return head;
}
}
注意:
- 先判断链表是否为空,若为空则直接返回
- 若
left!=null && right!=null
,则一直交换 - 先判断
right.next==null
,说明链表为偶数且已经交换完break
;再判断right.next.next==null
,说明链表为奇数且已经交换完break
;否则重新设置left
和right
继续循环。