评论

收藏

[C++] 「LeetCode」24. 两两交换链表中的节点

编程语言 编程语言 发布于:2021-07-31 16:55 | 阅读数:517 | 评论:0


  • 两两交换链表中的节点
    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:
DSC0000.png

输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:
输入:head = []
输出:[]
示例 3:
输入:head = [1]
输出:[1]
题解:
/**
 * 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) {
    ListNode hair = new ListNode(-1,head);
    ListNode pre = hair;
    while (pre.next != null && pre.next.next != null) {
      ListNode one =pre.next;
      ListNode two =pre.next.next;
      one.next = two.next;
      two.next = one;
      pre.next = two;
      pre = one;
    }
    return hair.next;
  }
}



关注下面的标签,发现更多相似文章