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

    class Solution {
    public:
        ListNode *swapPairs(ListNode *head) {
            ListNode *a = NULL;
            ListNode *b = NULL;
            ListNode *tail = NULL;
            ListNode *nhead = NULL;
            a = head;
            while (a != NULL && (b = a->next) != NULL) {
                a->next = b->next;
                b->next = a;
                if (tail != NULL) {
                    tail->next = b;
                } else {
                    nhead = b;
                }
                tail = a;
                a = a->next;
            }
            if (nhead == NULL) {
                nhead = head;
            }
            return nhead;
        }
    };

    准备六级,水一发

    第二轮:

    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.

    class Solution {
    public:
        ListNode *swapPairs(ListNode *head) {
            if (head == NULL || head->next == NULL) {
                return head;
            } 
            ListNode holder(0);
            ListNode* prev = &holder;
            ListNode* cur = head;
            
            while (cur != NULL) {
                ListNode* next = cur->next;
                if (next == NULL) {
                    break;
                }
                head = next->next;
                next->next = cur;
                cur->next = head;
                prev->next = next;
                prev = cur;
                cur = cur->next;
            }
            return holder.next;
        }
    };
  • 相关阅读:
    2月11日
    亚特兰蒂斯
    080215 晴
    2月9日
    2月6日
    2月10日
    080208 晴(0,50)
    关于春晚
    (15,50)
    恍然大悟
  • 原文地址:https://www.cnblogs.com/lailailai/p/3766541.html
Copyright © 2011-2022 走看看