• 24. Swap Nodes in Pairs


    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.

    题目:交换相邻的两个节点,如第一个和第二个交换,第三个和第四个交换。以此类推

    -------更新------------2017-11-13 22:33:01

    法一:

    带个头节点比较好

    class Solution {
    public:
         ListNode* swapPairs(ListNode* head) {
            ListNode* dummy=new ListNode(0);
            dummy->next=head;
            ListNode* prev=dummy;
            while(head &&head->next)
            {
                ListNode* nn=head->next->next;
                prev->next=head->next;
                head->next->next=head;
                head->next=nn;
                prev=head;
                head=nn;
               
            }
            return dummy->next;
            
        }
    };

     法二:官网上有人提交的一个方法。引用技巧,不如法一好理解..

    ListNode* swapPairs(ListNode* head) {
            ListNode **pp = &head, *a, *b;
            while ((a = *pp) && (b = a->next)) {
                a->next = b->next;
                b->next = a;
                *pp = b;   
                pp = &(a->next);
            }
            return head;
        }

    递归法: https://leetcode.com/problems/swap-nodes-in-pairs/discuss/

    public ListNode swapPairs(ListNode head) {
            if (head == null || head.next == null) {
                return head;
            }
            
            ListNode newhd = head.next;
            head.next = swapPairs(newhd.next);
            newhd.next = head;
            return newhd;
    }
  • 相关阅读:
    Redis 补充
    python 魔法方法补充(__setattr__,__getattr__,__getattribute__)
    Mongodb 补充
    Mysql补充
    HTML
    优秀工具
    优秀文章收藏
    MySQL
    爬虫
    Python
  • 原文地址:https://www.cnblogs.com/hozhangel/p/7828177.html
Copyright © 2020-2023  润新知