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;
        }
    };
  • 相关阅读:
    03-温故知新(下载网络资源)
    02-Inet套接字地址
    01-InetAddress常用方法
    递归删除文件夹跟拷贝文件夹
    File中常用的方法
    简单日志功能的实现
    简单二分查找算法
    应用打开其xlspptdoc等
    PPT文件分析摘记
    ReactNative小笔记
  • 原文地址:https://www.cnblogs.com/skysand/p/4300836.html
Copyright © 2011-2022 走看看