zoukankan      html  css  js  c++  java
  • Swap Nodes in Pairs

    Given a linked list, swap every two adjacent nodes and return its head.

    For example,
    Given 1->2->3->4, you should return the list as 2->1->4->3.

    Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

    分析:两两为一组进行交换。链表要注意的就是 进行新的赋值操作之后,原来的地址能不能被访问。

       nN  move

    比如:1->2->3->4->5->6

    命名1为nN,2为move,如果1的next指向3,那么2仍然可以以move的名义被访问,而不用是nN->next。但如果2的next指向4,那么3不能够被访问了,因为新的赋值已经将move->next指向4,原来的3会被覆盖,所以move->next指向的是4而不是3。

    运行时间:4ms

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode* swapPairs(ListNode* head) {
    12         if(!head || !head->next) return head;
    13         
    14         ListNode* newList = new ListNode(0);
    15         newList->next = head;
    16         ListNode* pre = newList;
    17         ListNode* move = head;
    18         while(move && move->next){
    19             newList->next = move->next;
    20             newList = newList->next;
    21             move->next = move->next->next;
    22             newList->next = move;
    23             newList = newList->next;
    24             move = move->next;
    25         }
    26         if(move) newList->next = move;
    27             
    28         return pre->next;
    29     }
    30 };
  • 相关阅读:
    hdu5587 BestCoder Round #64 (div.2)
    hdu5569 BestCoder Round #63 (div.2)
    hihocoder1257(构造)(2015北京ACM/ICPC)
    hihocoder 1249(2015ACM/ICPC北京)
    hihocoder1258(水)(2015ACM/ICPC北京站)
    hihiocoder 1255(搜索)(2015ACM/ICPC北京站)
    习题9-8 uva1631
    习题9-8 Uva1632
    Orz
    习题9-6 uva 10723
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4516074.html
Copyright © 2011-2022 走看看