1.相交链表https://leetcode-cn.com/problems/intersection-of-two-linked-lists/
看到这个题目没有理解示例1到底是什么意思,为什么都有1但相交的起始节点不是1那个点
后来知道了是要节点本身相等(不仅包括值还包括地址)。
看到官方的双指针法解答,感觉十分巧妙,长度分别为m和n的两个链表头均走m+n个步长后会达到相同的地方
1 class ListNode: 2 def __init__(self, x): 3 self.val = x 4 self.next = None 5 6 class Solution: 7 def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: 8 9 curr1, curr2 = headA, headB 10 while curr1 != curr2: 11 curr1 = curr1.next if curr1 else headB 12 curr2 = curr2.next if curr2 else headA 13 14 return curr1
另外还要注意一个问题:如果当前两个指针的节点相同,那么下一个一定也相同(地址相同,则值和下一个节点均相同)
2.多数元素https://leetcode-cn.com/problems/majority-element/
3.反转链表https://leetcode-cn.com/problems/reverse-linked-list/