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

    Swap Nodes in Pairs 题解

    原创文章,拒绝转载

    题目来源:https://leetcode.com/problems/swap-nodes-in-pairs/description/


    Description

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

    Example

    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.

    Solution

    
    class Solution {
    public:
        ListNode* swapPairs(ListNode* head) {
            if (head == NULL)
                return NULL;
            ListNode *tempHead = new ListNode(0);
            tempHead -> next = head;
            ListNode* front = tempHead;
            ListNode *node1, *node2;
            while (front -> next && front -> next -> next) {
                node1 = front -> next;
                node2 = node1 -> next;
                front -> next = node2;
                node1 -> next = node2 -> next;
                node2 -> next = node1;
                front = node1;
            }
            ListNode* res = tempHead -> next;
            delete tempHead;
            return res;
        }
    };
    
    

    解题描述

    这道题题意是将一个链表中每相邻的一对节点交换位置(已经交换过位置的不再交换)。主要的想法是,每次有三个指针frontnode1node2,在链表中是以front -> node1 -> node2的顺序排列,这里主要要做的就是交换node1node2的位置,使这段链表变成front -> node2 -> node1,之后将node1赋值给front即可开始下一步交换。

    另外这里用到了一个临时链表头tempHead来指向原来的head,便于给front赋初始值,并且在返回新链表头的时候可以快速找到。

  • 相关阅读:
    webbrowser在vb中叫
    linux小记之安装bin或deb程序
    9011,9012,9013,9014,8050,8550三极管的区别
    中兴v880刷机全过程。原创亲测
    Slackware的启动(init)过程
    sysvinit
    rc.S 分析【转自CSDN 】
    linux 解压rar zip
    slackware启动脚本详解
    工作
  • 原文地址:https://www.cnblogs.com/yanhewu/p/8366167.html
Copyright © 2011-2022 走看看