Leetcode - 24. 兩兩交換連結串列中的節點
阿新 • • 發佈:2021-08-29
給定一個連結串列,兩兩交換其中相鄰的節點,並返回交換後的連結串列。
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。
示例 1:
輸入:head = [1,2,3,4]
輸出:[2,1,4,3]
示例 2:
輸入:head = []
輸出:[]
示例 3:
輸入:head = [1]
輸出:[1]
提示:
- 連結串列中節點的數目在範圍 [0, 100] 內
- 0 <= Node.val <= 100
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解1 2021/8/29 O(n)
class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def __repr__(self): return '{}'.format(self.val) + (('->' + self.next.__repr__()) if self.next else '') def swapPairs(head: ListNode) -> ListNode: # 不能只是交換值,說是這麼說,但你咋知道我是不是交換值 # 交換值,看看它怎麼判 if head is None or head.next is None: return head l=[] while head: l.append(head.val) head=head.next len=l.__len__() x=0;y=1 while y<len: l[x]=l[x]+l[y] l[y]=l[x]-l[y] l[x]=l[x]-l[y] x+=2;y+=2 dummy=ListNode(-1) tmp=dummy for x in l: tmp.next=ListNode(x) tmp=tmp.next return dummy.next if __name__ == '__main__': head=ListNode(1,ListNode(2,ListNode(3,ListNode(4)))) print(swapPairs(head)) head=ListNode(1,ListNode(2,ListNode(3,ListNode(4,ListNode(9))))) print(swapPairs(head)) head=None print(swapPairs(head)) head=ListNode(1) print(swapPairs(head))