zoukankan      html  css  js  c++  java
  • leetcode[160]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.

    /**
     * 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=1;
            int b=1;
            ListNode *pa=headA;
            ListNode *pb=headB;
            while(pa->next)
            {
                a++;
                pa=pa->next;
            }
            while(pb->next)
            {
                b++;
                pb=pb->next;
            }
            if(pa!=pb)return NULL;
            pa=headA;
            pb=headB;
            if(a>b)
            {
                int i=0;
                while(i<a-b)
                {
                    pa=pa->next;
                    i++;
                }
            }
            else
            {
                int i=0;
                while(i<b-a)
                {
                    pb=pb->next;
                    i++;
                }
            }
            while(pa!=pb)
            {
               pa=pa->next;
               pb=pb->next;
            }
            return pa;
        }
    };
  • 相关阅读:
    Navicat 总是断开连接
    MySQL 重连机制
    优化 一
    python之 paramiko模块 连接服务器
    变量值的修改
    Python使用APScheduler实现定时任务
    Linux命令 清空文件
    输入法 | 输入法如何打出直角引号
    Java | Java字节码
    英语 | 图片学习单词
  • 原文地址:https://www.cnblogs.com/Vae1990Silence/p/4280713.html
Copyright © 2011-2022 走看看