杨鑫newlife的专栏

算法就是我的灵魂

(LeetCode)Intersection of Two Linked Lists --- 两个链表的交集

Write a program to find the node at which the intersection of two singly linked lists begins.


For example, the following two linked lists:

A:          a1 → a2
                   ↘
                     c1 → c2 → c3
                   ↗            
B:     b1 → b2 → b3

begin to intersect at node c1.


Notes:

  • If the two linked lists have no intersection at all, return null.
  • The linked lists must retain their original structure after the function returns.
  • You may assume there are no cycles anywhere in the entire linked structure.
  • Your code should preferably run in O(n) time and use only O(1) memory.

Credits:
Special thanks to @stellari for adding this problem and creating all test cases.

Subscribe to see which companies asked this question


解题分析:

对于这个题目来说,我的做法就是先判断出哪个LinkedList 比较小。

然后可循环比较最小的次数,来达到最高的效率,没有环,更好判断一些。

加上条件判断,就可以判断出来是否末尾的串有交集。

# -*- coding:utf-8 -*-
__author__ = 'jiuzhang'
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
        """
        listA= []
        listB= []
        if headA == None or headB == None:
            return None
        while 1:
            if headA == None:
                break
            listA.append(headA.val)
            headA = headA.next

        while 1:
            if headB == None:
                break
            listB.append(headB.val)
            headB = headB.next

        if listA[-1] != listB[-1]:
            return None
        if len(listA) < len(listB):
            minLen = len(listA)
        else:
            minLen = len(listB)
        for i in range(1, minLen + 1):
            if listA[-i] != listB[-i]:
                return ListNode(listA[-i + 1])
            if i == minLen:
                return ListNode(listA[-i])






阅读更多
版权声明:学习交流为主,未经博主同意禁止转载,禁止用于商用。 https://blog.csdn.net/u012965373/article/details/52382784
个人分类: Python Algorithm
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭