• leetcode: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.

    分析:题意为给予一个链表,交换相邻的两个节点然后返回头结点。要求算法空间复杂度为O(1).

    思路:新建一个链表每次插入temp->next后再插入temp,注意要判断若最后只剩下一个节点则不需要交换,每次交换了节点要把尾节点的下一个指向空。

    代码:

    /**
     * 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==NULL || head->next==NULL) return head;
            ListNode *helper=new ListNode(0);
            ListNode *temp=head;
            ListNode *cur=helper;
            while(temp  && temp->next)
            {
                ListNode *next=temp->next->next;
                cur->next=temp->next;
                cur=cur->next;
                cur->next=temp;
                cur=cur->next;
                cur->next=NULL;
                temp=next;
            }
            if(temp) cur->next=temp;
            return helper->next;
        }
    };
    

      

  • 相关阅读:
    nyoj--76--超级台阶
    nyoj--17--单调递增最长子序列
    poj-2406-Power Strings(KMP)
    poj-1611-The Suspects(并查集)
    poj 2031--Building a Space Station(prim)
    poj 3259-- Wormholes(SPFA)
    nyoj 21--三个水杯(隐式图bfs)
    HDU
    HDU
    CodeForces
  • 原文地址:https://www.cnblogs.com/carsonzhu/p/5201141.html
Copyright © 2020-2023  润新知