两个链表的第一个公共结点-输入两个链表,找出它们的第一个公共结点。

1、蛮力法:

 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         if(pHead1==NULL||pHead2==NULL)
13             return NULL;
14         ListNode* p1;
15         ListNode* p2;
16         for(p1=pHead1;p1!=NULL;p1=p1->next){
17             for(p2=pHead2;p2!=NULL;p2=p2->next){
18                 if(p1==p2)
19                     return p1;
20             }
21         }
22         return NULL;
23     }
24 };

2、

从链表的定义可以看出,这两个链表是单链表,如果两个链表有公共节点,那么这两个链表从某一节点开始,它们的m_pNext都指向同一个节点,之后它们所有的节点都是重合的,不可能再出现分叉。所以拓扑形状看起来是Y型。

 

一个简单的方法是:首先遍历两个链表得到它们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个节点。在第二次遍历的时候,先在较长的节点上走若干步,接着同时在两个链表上遍历,找到的第一个相同的节点就是它们的公共的节点。

 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         if(pHead1==NULL||pHead2==NULL)
13             return NULL;
14         int l1=0,l2=0;
15         ListNode* p1=pHead1;
16         ListNode* p2=pHead2;
17         while(p1!=NULL){
18             l1++;
19             p1=p1->next;
20         }
21         while(p2!=NULL){
22             l2++;
23             p2=p2->next;
24         }
25         int d1=0,d2=0;
26         if(l1>l2)
27             d1=l1-l2;
28         if(l1<l2)
29             d2=l2-l1;
30         p1=pHead1;
31         p2=pHead2;
32         while(d1!=0){
33             p1=p1->next;
34             d1--;
35         }
36         while(d2!=0){
37             p2=p2->next;
38             d2--;
39         }
40         while(p1!=NULL&&p2!=NULL){
41             if(p1==p2)
42                 return p1;
43             p1=p1->next;
44             p2=p2->next;
45         }
46         return NULL;
47     }
48 };

 

转载于:https://www.cnblogs.com/zl1991/p/4775888.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 飞框动画,AndroidTV中实现飞框选中效果

相信很多从事AndroidTV开发的朋友都对如何展示item的选中效果感到苦恼&#xff0c;电视端开发与移动端最大的不同是用户只能通过一个遥控器进行控制(当然如果你的电视是触屏的话除外……)&#xff0c;在这个时候&#xff0c;我们需要让用户知道当前选中的到底是哪一个项目&…

VB 文件操作

1. 打开文件 Open "文件名" [for 模式] [Access 操作类型] [锁定] As [#]文件号 [Len记录长度] 模式&#xff1a;OUTPUT 写 INPUT 读 APPEND 追加 操作类型&#xff1a; READ WRITE READWRITE 锁定&#xff1a; Share &#xff08;缺省&#xff09;LOCKREAD LOCKW…

数组总结

1冒泡排序和选择排序 1 package hello;2 3 import java.io.BufferedOutputStream;4 import java.io.File;5 import java.io.FileInputStream;6 import java.io.FileNotFoundException;7 import java.io.FileOutputStream;8 import java.io.IOException;9 import java.io.InputS…

鸿蒙系统支持980,鸿蒙手机上线时间 鸿蒙系统支持哪些手机2021最新汇总

鸿蒙手机来了&#xff0c;从2019年公布到现在的正式发布&#xff0c;没想到华为这么迅速&#xff0c;而且华为EMUI微博更名HarmonyOS&#xff0c;在Android与iOS这两座大山面前&#xff0c;大家觉得鸿蒙系统值得更新体验吗&#xff1f;目前来说鸿蒙系统支持第三方手机有哪些呢&…

confluence正常安装网页报错_NAS折腾手记1:在OMV5上安装ZFS On Linux的正确步骤

起因是直接安装OVMExtra里自带的zfs插件会报错&#xff0c;所以需要使用命令行来做一些前置准备。源配置有两种方法。1是安装OMVExtra并在内直接启用所有测试源下载地址在此​omv-extras.org2是手动添加&#xff0c;执行以下命令vi /etc/apt/sources.list.d/buster-backports.l…

17个新手常见Python运行时错误

当初学 Python 时&#xff0c;想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。 1&#xff09;忘记在 if , elif , else , for , while , class ,def 声明末尾添加 &#xff1a;&#xff08;导致 “SyntaxError &#xff1…

android activity alias,动态更换桌标 Activity-alias

前言动态更换App图标,网上可以收搜到很多,这里也是参考前人经验,读完本文可以得到,如何动态更换桌标(非网络获取桌标图片),标志位的阐述,更加透彻的理解.用到的知识activity-alias并不是代表一个Activity&#xff0c;而是代表一个已经存在的Activity的别名。它使用在清单文件中…

python替代php,Python架构的PHP替代方案

I am happily using fabric for my Python projects for deployment. Now I am engaged in a larger PHP project and wondering if there is something like fabric for PHP?解决方案Hmm? Why does it matter? Fabric is just python scripting. So its project language a…

MAC终端安装grunt--javascript世界得构建工具

祝贺我成为前端啦&#xff01;~~从年前得小测试到今年得前端&#xff0c;成功转型&#xff01;我真是一个进步得好青年&#xff0c;好少女&#xff01; 这两天出去受虐&#xff0c;面了两家前端&#xff0c;表现非常不好&#xff0c;还是回到我现在得公司好好沉淀技术&#xff…

android sdk eclipse没导入,Android—新的eclipse导入SDK出错解决办法

原先系统崩溃&#xff0c;重装系统&#xff0c;加入一块内存条&#xff0c;从32位变成62位&#xff0c;原先的eclipse用不了&#xff1b;去官网下载64位的eclipse&#xff0c;安装&#xff0c;用一样的方法导入SDK。这时候肯定会提示错误&#xff0c;如下&#xff1a;1.This An…

两个分数化简比怎么化_我学《分数的意义》心得

停课不停学已经有将近两个月了&#xff0c;我们迈入了“分数”这一部分。听妈妈说&#xff0c;这一块内容很重要&#xff0c;可我觉得到目前为止(明天就学真分数、假分数和带分数了)&#xff0c;分数好像并不比四年级难。看了看书&#xff0c;再做点练习&#xff0c;把这点新的…

html在线拖拽环绕,jQuery实现html元素拖拽

代码很简单&#xff0c;效果非常棒&#xff0c;直接给大家上源码&#xff1a;html定投金额 :元10050010002000300040005000600070008000900010000单位:元css.money-input{margin:36px auto 0;width:330px;font-size:14px;color:#818181}.input-rela{width:250px;height:42px;di…

iphone 抹除设备是什么意思_SMT设备有哪些,SMT是什么意思?

SMT设备其实就是表面贴装技术所需要的机器&#xff0c;一般一条SMT整线常规包含以下设备&#xff1a;上板机、印刷机、接驳台、SPI、贴片机、插件机、回流焊、波峰焊、AOI、X-ray、下板机等设备&#xff0c;以上设备是一条比较完整的smt配线清单设备&#xff0c;不同工厂可根据…

visual studio 安装Entity framework失败

今日通过Nuget安装Entity Framwork 6.1.3时候在最后一步石一直报错&#xff0c;提示“安装失败&#xff0c;正在回滚”。 回滚也就罢了&#xff0c;居然还卸载不了安装了一半的EF。 shit 考虑是不是得用管理员模式run Visual Studio 试之&#xff0c;然并卵。 是不是Nuget版本太…

笔记本软件页面分辨率低_笔记本最容易忽略的屏幕 有几个参数一定要知道

对于第一次购买笔记本的朋友来说&#xff0c;往往会忽视一个重要的硬件&#xff0c;那就是屏幕。尺寸有多大&#xff1f;分辨率是多少&#xff1f;色彩好不好&#xff1f;这些都应该是大家应该关心的问题。下面笔者就和大家聊聊笔记本屏幕应该注意的几个参数。1、尺寸屏幕尺寸示…

html优美界面左侧下拉,一组时尚的侧边栏菜单和下拉列表UI设计

这是一款非常时尚的可伸展的侧边栏菜单和select下拉列表以及手风琴式垂直下拉列表UI设计效果。它们通过简单的CSS样式设置&#xff0c;以及和jQuery&#xff0c;jqueryUI的配合&#xff0c;制作出非常时尚的web组件UI设计效果。制作方法HTML结构侧边栏的HTML结构使用在中嵌套无…

.NET基础 (03)生成、部署和管理

生成、部署和管理1 如何生成强签名的程序集2 如何把程序集放入GAC中3 延迟签名及其作用4 程序集的版本分哪几部分 1 如何生成强签名的程序集在生成程序集时&#xff0c;CLR提供了两种可选类型&#xff1a;强签名程序集。弱签名程序集。 强签名程序集是一个带有公钥和数字签名的…

.net 识别一维码_天若OCR文字识别 v5.0 原创好用的OCR及翻译小工具

一款非常好用的OCR及翻译小工具&#xff0c;集合百度、腾讯、有道、搜狗&#xff0c;调用了各大网站的ocr接口&#xff0c;免费不限次数(有道免费接口有ip限制仅供娱乐)。1、对于搜狗的接口调用的还是http://ocr.shouji.sogou.com/v2/ocr/json&#xff0c;这个接口识别效果很好…

html中div中加颜色,css怎样给div加边框颜色

css怎样给div加边框颜色1、css为div四个边分别添加边框border-color:#000(设置4边边框颜色为黑色)border-color:颜色值&#xff0c;即可设置对象边框颜色border-left-color:#000 设置左边框颜色为黑色border-right-color:#000 设置右边框颜色为黑色border-top-color:#000 设置上…

Microsoft Dynamics CRM 前瑞开发

做CRM开发最大的感受就是其前瑞开发过程中&#xff0c;调试起来比较麻烦&#xff0c;需要做一些断点还要配制一些浏览器设置&#xff0c;对新手来说比较困难。还有就是对REST调试&#xff0c;经常为了调试一个正确的结果而花费大量的时间。现在推荐一个REST 工具来调试CRM的前瑞…