leetcode 【 Swap Nodes in Pairs 】python 实现

时间:2023-03-08 20:23:24

题目

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.

代码:oj 测试通过 Runtime: 42 ms

 # Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None class Solution:
# @param a ListNode
# @return a ListNode
def swapPairs(self, head):
if head is None or head.next is None:
return head dummyhead = ListNode(0)
dummyhead.next = head pre = dummyhead
curr = head
while curr is not None and curr.next is not None:
tmp = curr.next
curr.next = tmp.next
tmp.next = pre.next
pre.next = tmp
pre = curr
curr = curr.next
return dummyhead.next

思路

基本的链表操作。

需要注意的是while循环的判断条件:先判断curr不为空,再判断curr.next不为空。

这种and判断条件具有短路功能,如果curr为空就不会进行下一个判断了,因此是安全的