zoukankan      html  css  js  c++  java
  • 剑指Offer 两个链表的第一个公共结点

    题目描述

    输入两个链表,找出它们的第一个公共结点。
     
    思路:
    题目说的很笼统,应该是有2个链表,找出公共点,第一个公共点后面的链表是共同所有的。可以用map做,直接检测map里有没有出现这个节点。
    思路2:
    统计2个链表的长度,i,j,长的链表先走|i-j|步,再一起走,如果有公共点,他们必然有共同的尾节点,判断相等的节点就是第一个出现的节点。
     
    AC代码:
     1 /*
     2 struct ListNode {
     3     int val;
     4     struct ListNode *next;
     5     ListNode(int x) :
     6             val(x), next(NULL) {
     7     }
     8 };*/
     9 class Solution {
    10 public:
    11     ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {
    12         map<ListNode *,int> pmap;
    13         ListNode *p=pHead1;
    14         while(p!=NULL)
    15         {
    16             pmap[p]=1;
    17             p=p->next;
    18         }
    19         p=pHead2;
    20         while(p!=NULL)        
    21         {
    22             if(pmap[p])
    23                 return p;
    24             p=p->next;
    25         }
    26         return NULL;
    27     }
    28 };
     
     
     
  • 相关阅读:
    如何优雅地删除 Linux 中的垃圾文件
    session:
    cookie:
    多对多表结构设计:
    接口测试:
    oracle基本笔记整理
    oracle基本笔记整理
    oracle基本笔记整理
    2016年寒假心得
    2016年寒假心得
  • 原文地址:https://www.cnblogs.com/SeekHit/p/5803393.html
Copyright © 2011-2022 走看看