• (链表 递归) leetcode 24. Swap Nodes in Pairs


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

    You may not modify the values in the list's nodes, only nodes itself may be changed.

    Example:

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

    ---------------------------------------------------------------------------
    中文大意是两两交换其中相邻的结点。有非递归和递归的解法,在非递归的解法上,要画下图,辅助理解。

    C++代码:
    非递归:
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* swapPairs(ListNode* head) {
            ListNode *dummy = new ListNode(-1),*cur = dummy;
            cur->next = head;
            while(cur->next && cur->next->next){
                ListNode *t = cur->next->next;
                cur->next->next = t->next;
                t->next = cur->next;
                cur->next = t;
                cur =cur->next->next;
            }
            return dummy->next;
        }
    };

    递归:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* swapPairs(ListNode* head) {
            if(!head || !head -> next){
                return head;
            }
            ListNode *t = head->next;
            head->next = swapPairs(head->next->next);
            t->next = head;
            return t;
        }
    };

    参考博客:http://www.cnblogs.com/grandyang/p/4441680.html

  • 相关阅读:
    线程池
    多线程随笔
    注解随笔
    反射机制
    iO流
    FastDFS+docker建立分布式文件系统
    Java之Exception
    Java之String
    手写SpringMvc
    spring中一些常用注解的含义
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/10704144.html
Copyright © 2020-2023  润新知