在leetcode上刷链表高频题后总结出的解题注意事项:未完待续ing
- 链表题虽然思路可能很绕,但基本都是对指针和遍历的理解,所以一定要掌握概念和学会运用,强烈建议做题的时候画图理解!!!
- 链表类python定义:
class ListNode():
def __init__(self, val=0, next=None):
self.val = val # 值
self.next = next # 指向下一个节点的指针
- 声明链表可以用curr=head=ListNode(),head用于返回各种操作后的整个链表,curr用于指针移动(遍历)(详见python的深拷贝与浅拷贝)。
- 哨兵节点(哑头节点)指链表的头节点的值可以没意义,最后return head.next即可返回有意义的部分链表。
- 链表的添加:
curr.next=ListNode(100)
- 链表的遍历方式(指针移动)为:
curr = curr.next
,一般和添加一起用于链表新元素的添加和指针移动到新元素上来进行后续的操作,注意此时curr指的是链表剩下的所有节点,而不是单独某一个节点。 - 链表的反转通过声明中间指针temp,哨兵节点pre来实现。
- 快慢指针fast和slow可以帮助对链表中的某个节点进行操作,是十分好用的链表操作技巧。