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/

 

posted on 2021-01-25 20:26  zmbreathing  阅读(81)  评论(0编辑  收藏  举报