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

    题目描述
    输入两个链表,找出它们的第一个公共结点。
     
    解题思路:本题先分别遍历两个链表一遍,求出两个链表的长度。并求出长度差值。然后让长度长的链表先走差值步,然后两个链表一起移动,直到两链表重合,返回第一个结点。
     
    注意:判断条件while((pLong != NULL) && (pShort != NULL) && (pLong->val != pShort->val))
    以上为正确的判断条件,while((pLong != NULL) && (pShort != NULL) && (pLong!= pShort)这样写在牛客网上能通过,但是在本地编译器,这样判断,只有当两个链表有一个为空时才会跳出循环,不是两链表重合就跳出循环。重合时pLong也不等于pShort
     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         unsigned int length1 = GetListLength(pHead1);
    13         unsigned int length2 = GetListLength(pHead2);
    14  
    15         int nLength = 0;
    16         ListNode *pLong;
    17         ListNode *pShort;
    18         if(length1 > length2)
    19         {
    20             nLength = length1 - length2;
    21             pLong = pHead1;
    22             pShort = pHead2;
    23         }
    24         else
    25         {
    26             nLength = length2 - length1;
    27             pLong = pHead2;
    28             pShort = pHead1;
    29         }
    30  
    31         for(int i=0;i<nLength;i++)
    32         {
    33             pLong = pLong->next;
    34         }
    35         //两链表已对齐
    36         while((pLong != NULL) && (pShort != NULL) && (pLong->val != pShort->val))
    37         {
    38             pLong = pLong->next;
    39             pShort = pShort->next;
    40         }
    41         ListNode *pFirstCommmonNode = pLong;
    42         return pFirstCommmonNode;
    43  
    44     }
    45     unsigned int GetListLength(ListNode *pHead)
    46     {
    47         unsigned int length = 0;
    48         ListNode *pNode = pHead;
    49         while(pNode != NULL)
    50         {
    51             length++;
    52             pNode = pNode->next;
    53         }
    54         return length;
    55     }
    56 };
  • 相关阅读:
    php date函数
    jquery AJAX教程
    Magento 批量修改订单状态为 Completed
    php 复习笔记 乱
    正则替换 php js
    magento订单状态修改
    换个心态继续走IT路
    神奇的HTML5,效果超炫,用Google chrome浏览
    PHP $_SERVER参数
    第六章 线程基础
  • 原文地址:https://www.cnblogs.com/qqky/p/6984638.html
Copyright © 2011-2022 走看看