一.相交链表
1.题目
给你两个单链表的头节点
headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。图示两个链表在节点
c1开始相交:
2.题解
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
pA=headA
pB=headB
while pA!=pB:
pA=pA.next if pA else headB
pB=pB.next if pB else headA
return pA
二.反转链表
1.题目
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:

输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
2.题解
方法一:笨方法 反转存储到列表里,再根据这个列表新建一个链表
# 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 reverseList(self, head):
"""
:type head: Optional[ListNode]
:rtype: Optional[ListNode]
"""
vals=[]
pA=head
while pA:
vals.append(pA.val)
pA=pA.next
vals=vals[::-1]
if not vals:#避免空值导致后面访问空值越界
return None
dummy=ListNode(vals[0])#创建第一个节点
head2=dummy #创建头指针
for val in vals[1:]:#从第一个值开始而不是第0



最低0.47元/天 解锁文章
1276

被折叠的 条评论
为什么被折叠?



