zoukankan      html  css  js  c++  java
  • leetCode(3):Intersection of Two Linked Lists 分类: leetCode 2015-06-16 14:41 124人阅读 评论(0) 收藏

    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.
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
            if(headA==NULL || headB==NULL)
        		return NULL;
        	int a=0;
        	int b=0;
        	
        	ListNode* p=headA;
        	while(p)
        	{
        		a++;
        		p=p->next;
        	}
    		p=headB;
        	while(p)
        	{
        		b++;
        		p=p->next;
        	}
        	
        	int diff=a-b;
        	
        	ListNode* pA=headA;
        	ListNode* pB=headB;
        	
        	if(diff>=0)
        	{
        		int i=0;
        		while(i<diff)
        		{
        			pA=pA->next;
        			i++;
        		}
        	}
        	else
        	{
        		diff*=(-1);
        		int i=0;
        		while(i<diff)
        		{
        			pB=pB->next;
        			i++;
        		}
        	}	
        	while(pA!=pB && pA!=NULL)
        	{
        		pA=pA->next;
        		pB=pB->next;
        	}
        	if(pA==NULL)
        		return NULL;
        	else
        		return pA;	
                
            }
    };



  • 相关阅读:
    1094. Car Pooling
    121. Best Time to Buy and Sell Stock
    58. Length of Last Word
    510. Inorder Successor in BST II
    198. House Robber
    57. Insert Interval
    15. 3Sum java solutions
    79. Word Search java solutions
    80. Remove Duplicates from Sorted Array II java solutions
    34. Search for a Range java solutions
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687114.html
Copyright © 2011-2022 走看看