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

    思路1:

    class Solution {
    public:
    // 两个指针,p, q, q指向第二个,preP是p之前
        ListNode *swapPairs(ListNode *head) {
            if(head == NULL) return NULL;
            auto p = head;
            auto q = head->next;
            ListNode preHead(-1);
            ListNode* preP = &preHead;
            preP->next = p;
            ListNode* tmp;
            while(q){
                preP->next = q;
                tmp = q->next;// 记录q之后,作为下一个p
                q->next = p;
                preP = p;
                if(tmp) p = tmp;
                else break;
                q = p->next;
            }
            return preHead.next;
        }
    };
    image

    结果是超时了,后来看了别的答案之后发现是tmp=q->next这句处理的不好,不应该用临时变量,而用p->next = q->next;这样下一个p可以是p->next:

    class Solution {
    public:
    // 两个指针,p, q, q指向第二个,preP是p之前
        ListNode *swapPairs(ListNode *head) {
            if(head == NULL) return NULL;
            auto p = head;
            auto q = head->next;
            ListNode preHead(-1);
            ListNode* preP = &preHead;
            preP->next = p;
            while(q){
                preP->next = q;
                p->next = q->next;// 记录q之后,作为下一个p
                q->next = p;
                preP = p;
                p = p->next;
                q = p?p->next:nullptr;
            }
            return preHead.next;
        }
    };
  • 相关阅读:
    Django框架---- 信号
    算法----迷宫问题
    算法----数据结构
    算法----其他排序
    Twisted简介
    爬虫----selenium模块
    爬虫----Scrapy框架
    爬虫----requests模块
    关于电脑运行ubunut出现严重发热的问题
    基本操作命令详解
  • 原文地址:https://www.cnblogs.com/skysand/p/4300836.html
Copyright © 2011-2022 走看看