刷力扣热题–第十天:160:相交链表
菜鸟第十天开始奋战敲代码,持之以恒,见证成长
1.题目简介
2.题目解答
这是我做链表的第一题,补了一下链表在python中的用法,但其实和C差不多,在定义好数据结构的基础上,节点间的传递和引用也是类似的,那么接下来就是对问题的认识,既然要找他们的相交节点,那么重点感觉是对齐他们,然后再进行遍历,查看对齐后的部分是否相同,那么只需要设置一个函数,查看两个链表的长度,并根据长度先对长的进行处理后,同时处理比较是否相同,时间复杂度为O(M+N),空间复杂度为O(1),实现结果如下:
OK,过了,结果还不错,就不优化了,今天先这样.
3.心得体会
这道题是简单题,所以做法比较简单,难度可能更多是对链表的认识,实现过程倒还行,代码放下面了:
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
def get_length(head):
length = 0
while head:
length += 1
head = head.next
return length
def return_head(headA,len_step,headB):
while len_step != 0:
headA = headA.next
len_step -= 1
while headA:
if headA == headB:
return headB
headA = headA.next
headB = headB.next
return None
lenA = get_length(headA)
lenB = get_length(headB)
if lenA >= lenB:
return return_head(headA,lenA-lenB,headB)
else:
return return_head(headB,lenB-lenA,headA)
4.做题时长
7月14日15:30-17:10 低头赶路吧~