leetcode24两两交换链表中的节点

leetcode24 Swap Nodes in Pairs

Posted by BY on August 2, 2018

前言

今天提交之后看运行时0ms,我震惊了。大力出奇迹

正文

问题来源

本问题来自leetcode上的24题。用go语言做的

问题描述

给定一个字符串,找出不含有重复字符的最长子串的长度。

示例 1:

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

说明:
你的算法只能使用常数的额外空间。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

分析:

Go代码如下:

func swapPairs(head *ListNode) *ListNode {
        if nil == head {
                return head
        }       
        var temp *ListNode
        temp = nil
        p, q := head, head.Next
        if q != nil {
                head = head.Next
        }       
        for nil != p && nil != q {
                if nil != temp {
                        temp.Next = q
                }       
                temp = p
                p.Next, q.Next = q.Next, p
                p = p.Next
                if nil == p {
                        return head
                }       
                q = p.Next
        }       
        return head
}

总结:

多思考是否有简单并且高效的解法

结语

闲来无事的话,多练习练习,做做题。