美文网首页算法每日一刷
LeetCode算法题-24. 两两交换链表中的节点(Swift

LeetCode算法题-24. 两两交换链表中的节点(Swift

作者: entre_los_dos | 来源:发表于2019-10-15 12:11 被阅读0次

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目

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

    你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

    示例:

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

    方法

        func swapPairs(_ head: ListNode?) -> ListNode? {
            
            let resultNode: ListNode = ListNode(0)
            var currentNode: ListNode? = resultNode
            
            var headCurrentNode = head
            
            while (headCurrentNode != nil) {
                
                let node1 = headCurrentNode
                
                if node1!.next != nil {
                    headCurrentNode = headCurrentNode?.next?.next
    
                    currentNode!.next = node1!.next
                    currentNode!.next?.next = node1
                    
                    currentNode = currentNode!.next?.next
                    currentNode?.next = nil
    
                }else {
                    currentNode!.next = node1
                    currentNode = currentNode!.next
                    
                    headCurrentNode = headCurrentNode?.next
                }
            }
            
            return resultNode.next
        }
    

    相关文章

      网友评论

        本文标题:LeetCode算法题-24. 两两交换链表中的节点(Swift

        本文链接:https://www.haomeiwen.com/subject/safrmctx.html