• 24.成对的交换节点(24.Swap Nodes in Pairs)


    题目:

    给定一个链表,交换每两个相邻的节点并返回其头。

    例如,
    给定1->2->3->4,您应该返回列表2->1->4->3

    您的算法应该仅使用恒定空间。不能修改列表中的值,只能改变节点本身。

    思路:从链表的头节点开始将相邻的两个节点进行交换位置,然后剩下未交换的节点作为一个新的链表进行递归的交换,直到所要进行交换的链表节点个数小于2,则返回此链表。

    代码:

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) { val = x; }
     7  * }
     8  */
     9 class Solution {
    10     public ListNode swapPairs(ListNode head) {
    11         
    12         //思路:从链表的头节点开始将相邻的两个节点进行交换位置,然后剩下未交换的节点作为一个新的链表进行递归的交换,直到所要进行交换的链表节点个数小于2,则返回此链表。
    13         
    14         if(head==null||head.next==null){
    15             
    16             return head;
    17             
    18         }
    19         
    20         ListNode l=head.next.next;//剩下未进行交换节点组成的新链表的表头;
    21         
    22         //将原链表的头节点和第二个节点进行交换位置
    23         ListNode temp=head;
    24         head=temp.next;//将原链表的第二个节点变为头节点
    25         head.next=temp;//将原链表的头节点变为第二个节点
    26         temp.next=swapPairs(l);//新链表进行递归交换相邻节点作为已经交换相邻节点的第二个节点的后继节点;
    27         
    28         return head;
    29     }
    30 }
  • 相关阅读:
    [HAOI2007][SDOI2005]反素数
    [UVa1636]Headshot
    [Codeforces 581D]Three Logos
    [NOIP2014普及组]子矩阵
    洛谷 P3299 [SDOI2013]保护出题人 解题报告
    洛谷 P3965 [TJOI2013]循环格 解题报告
    洛谷 P3989 [SHOI2013]阶乘字符串 解题报告
    [SHOI2013]发牌 解题报告
    洛谷 P3962 [TJOI2013]数字根 解题报告
    LOJ 2664. 「NOI2013」向量内积 解题报告
  • 原文地址:https://www.cnblogs.com/xuzhiyuan/p/7655552.html
Copyright © 2020-2023  润新知