程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> LeetCode Swap Nodes in Pairs

LeetCode Swap Nodes in Pairs

編輯:關於C++

LeetCode解題之Swap Nodes in Pairs


原題

將鏈表中相鄰的兩個節點交換位置,注意第一個節點與第二個節點要交換位置,而第二個節點不用與第三個節點交換位置。

注意點:

不允許修改節點的值 只能用常量的額外空間

例子:

輸入: head = 1->2->3->4
輸出: 2->1->4->3

解題思路

比較常見的鏈表操作。下面看一下典型情況,如要交換鏈表中A->B->C->D中的B和C需要做如下操作:

將A指向C 將B指向D 將C指向B

在頭節點之前加一個假節點就可以使所有的交換都符合上面的情況。

AC源碼

# Definition for singly-linked list.
class ListNode(object):
    def __init__(self, x):
        self.val = x
        self.next = None


class Solution(object):
    def swapPairs(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        prev = ListNode(-1)
        prev.next = head
        temp = prev
        while temp.next and temp.next.next:
            node1 = temp.next
            node2 = temp.next.next
            temp.next = node2
            node1.next = node2.next
            node2.next = node1
            temp = temp.next.next
        return prev.next

歡迎查看我的Github來獲得相關源碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved