• 剑指offer36-两个链表的第一个公共结点


    题目描述

    输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)

    思路:因为正常情况下,两个链表前面部分是不同的,后面部分是相同的,所以从后往前查看比较容易。因此需要借助栈。

    将两个链表分别从表头开始装入栈中,全部装入完后。两个栈再同时进行出栈操作,并且进行判断两者是否相等,一直找到不等的节点,那么他们的上一个节点就是我们所找的节点。

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
                val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
            //借助于栈,前半部分两个链表是不同的,但是后半部分是一样的所以通过栈从后往前进行检测
            if(pHead1==NULL || pHead2==NULL)
                return NULL;
            stack<ListNode*> stack1;
            stack<ListNode*> stack2;
            //将链表1放入栈中
            while(pHead1!=NULL){
                stack1.push(pHead1);
                pHead1 = pHead1->next;
            }
            //将链表2放入栈中
            while(pHead2!=NULL){
                stack2.push(pHead2);
                pHead2 = pHead2->next;
            }
            //两个栈同时往外出
            ListNode* p = stack1.top();
            ListNode* q = stack2.top();
            ListNode* result = NULL;
            while(!stack1.empty() && !stack2.empty()){
                p = stack1.top();
                q = stack2.top();
                if(p->val == q->val){
                    result = stack1.top();
                    stack1.pop();
                    stack2.pop();
                }
                else{
                    break;
                }
            }
            return result;
            
        }
    };
  • 相关阅读:
    MySQL 大表优化方案
    mysql千万级大数据SQL查询优化
    mysql binlog格式
    MySQL误操作后如何快速恢复数据
    mysql数据库优化
    查看MYSQL数据库中所有用户及拥有权限
    MySQL如何优化
    MySQL 开发实践
    show slave各项参数解释
    MYSQL主从数据库搭建
  • 原文地址:https://www.cnblogs.com/loyolh/p/12358915.html
Copyright © 2020-2023  润新知