兩個鏈表的第一個公共結點-輸入兩個鏈表,找出它們的第一個公共結點。

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.pswp.cn/news/273006.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273006.shtml
英文地址,請注明出處:http://en.pswp.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的前瑞…