• 两个链表的第一个公共节点


    题目描述

    输入两个链表,找出它们的第一个公共结点。
     
     
     
     
    提交链接:点击
     
     
     
     
    思路:
     
       找两个链表的第一个公共节点。首先得考虑的是两个链表可能不等长,那么就需要首先得到两个链表的长度L1,L2。让长的那个链表先走(L2-L1)步,接下来就判断分别指向两个链表的指针是否相等就好了!
      
     
    代码:
    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
                val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
            //Y字形的结构,首先得确定同时移动指针的位置
            int pLen1=0,pLen2=0;
            ListNode *t1=pHead1,*t2=pHead2;
            if(pHead1==NULL||pHead2==NULL) return NULL;
            for(;pHead1!=NULL;){
                pLen1++;
                pHead1=pHead1->next;
            }
            for(;pHead2!=NULL;){
                pLen2++;
                pHead2=pHead2->next;
            }
            if(pLen1>pLen2){
                int temp=pLen1-pLen2;
                for(int i=0;i<temp;i++){
                    t1=t1->next;
                }
            }else{
                int temp=pLen2-pLen1;
                for(int i=0;i<temp;i++){
                    t2=t2->next;
                }
            }
            while(t1!=NULL && t2!=NULL){
                if(t1==t2){
                    return t1;
                }
                t1=t1->next;
                t2=t2->next;
            }
            return NULL;
        }
    };
  • 相关阅读:
    1860 最大数
    1164 统计数字
    1063 合并果子
    1098 均分纸牌
    2806 红与黑
    1168 火柴棒等式
    1910 递归函数
    2774 火烧赤壁
    2017.0705.《计算机组成原理》-存储器
    2017.0704.《计算机组成原理》-动态RAM
  • 原文地址:https://www.cnblogs.com/logo-88/p/9839110.html
Copyright © 2020-2023  润新知