我正在努力学习Python,并且正在使用LeetCode进行练习.Problem 1721要求我们编写一个函数,当传递到链表中时,该函数将两两交换相邻 node .例如:
Input : [A, B, C, D, E, F, G]
Output: [B, A, D, C, F, E, G]
我自己想出了一个解决方案,但我不明白下面的另一个解决方案.当作者写pre = self
的时候,pre
到底是什么?我对关键字self
的理解使我相信它指的是Solution
类的一个实例,但我不知道这将如何帮助解决问题.难道我们不应该只操纵链表吗?
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def swapPairs(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
pre, pre.next = self, head
while pre.next and pre.next.next:
a = pre.next
b = a.next
pre.next, b.next, a.next = b, a, b.next
pre = a
return self.next
我读过其他几个问题和介绍self
的其他网站,但它们都只提供了构造函数和其他微不足道的函数的非常基本的示例.我不明白self.next
在这里是什么意思.
这是我在这个论坛上的第一个问题,所以如果我有任何方法可以改进这个问题,请告诉我.提前谢谢您.