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

    题目描述

    输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
    如果两个有公共结点 那么从这个公共结点往后的所有结点都是一样的
    方法一:借用栈(相当于从后往前找) 找第一个不相同的点之前的点
    import java.util.*;
    public class Solution {
        public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
            Stack<ListNode> s1=new Stack<>();
            Stack<ListNode> s2=new Stack<>();
            while (pHead1 != null){
                s1.push(pHead1);
                pHead1=pHead1.next;
            }
            while (pHead2 != null){
                s2.push(pHead2);
                pHead2=pHead2.next;
            }
            ListNode result=null;
            while (!s1.isEmpty() && !s2.isEmpty() && s1.peek() ==s2.peek()){
                s1.pop();
                result =s2.pop();
            }
            return  result;
        }
    }

    方法2:用两个指针同时往后走 最终两个指针到达相同的结点或者同时到达null

    如果两个数组长度相同 第一遍直接找到或者找不到;

    如果两个数组长度不相同 第一遍结束的时候两个pHead会在同一位置开始往后找 相当于长度相同的数组

    import java.util.*;
    public class Solution {
        public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
            if(pHead1 == null || pHead2 == null){
                return  null;
            }
            ListNode l1=pHead1,l2=pHead2;
            while(pHead1 != pHead2){
                if(pHead1 != null) pHead1 = pHead1.next;
                else pHead1=l1;
                if(pHead2 != null) pHead2 = pHead2.next;
                else  pHead2=l2;
            }
            return pHead1;
        }
    }
  • 相关阅读:
    什么是整型数据类型
    什么是布尔型(boolean)数据类型?
    PHP的八种数据类型
    php中session时间设置详解
    php中session数据库存储实例详解
    php中session临时文件和缓存说明
    php自定义Session的信息处理说明
    如何通过Session对用户操作权限进行判断的实例详解
    php中的Session是什么
    php中如何传递Session ID
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/12443658.html
Copyright © 2011-2022 走看看