LeetCode - 21. 合并兩個有序鏈表

題目

21. 合并兩個有序鏈表

思路

我會采用雙指針的方法,同時遍歷兩個鏈表,比較當前節點的值,將較小的節點添加到結果鏈表中。

具體思路是這樣的:

首先創建一個啞節點(dummy node)作為合并后鏈表的頭部,這樣可以簡化邊界情況的處理

用兩個指針分別指向兩個鏈表的當前節點

比較兩個指針所指節點的值,將值較小的節點添加到結果鏈表,并將對應的指針向后移動

重復步驟3,直到其中一個鏈表遍歷完畢

將另一個還有剩余的鏈表直接接到結果鏈表后面

返回dummy.next作為合并后的鏈表頭

讀者可能出現的錯誤

class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode* p1 = list1;ListNode* p2 = list2;ListNode* dummy = new ListNode(0);ListNode* cur = dummy;while(p1&&p2){if(p1->val >= p2->val){cur->next = p2;p2 = p2->next;}else{cur->next = p1;p1 = p1->next;}}if(p1){cur->next = p1;}else{cur->next = p2;}ListNode* newlist = cur;delete dummy;return newlist;}
};

沒有更新cur指針:在每次連接節點后,沒有執行cur = cur->next,導致cur一直停留在dummy節點,每次操作都會覆蓋之前的連接。

當把后續的鏈表添加上的時候應該用while,而不是用if

返回值錯誤:應該返回dummy->next(合并后的鏈表頭),而不是cur或newlist。

正確的代碼

class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode* p1 = list1;ListNode* p2 = list2;ListNode* dummy = new ListNode(0);ListNode* cur = dummy;while(p1 && p2){if(p1->val >= p2->val){cur->next = p2;p2 = p2->next;}else{cur->next = p1;p1 = p1->next;}cur = cur->next;}while(p1){cur->next = p1;p1 = p1->next;cur = cur->next;}while(p2){cur->next = p2;p2 = p2->next;cur = cur->next;}ListNode* newhead = dummy->next;delete dummy;return newhead;}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95097.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95097.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95097.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ES01-環境安裝

ES01-環境安裝 文章目錄ES01-環境安裝1-參考網址2-知識總結1-參考網址 elasticsearch官網地址:https://www.elastic.co/安裝elasticsearch9.0.0參考:https://zhuanlan.zhihu.com/p/1920780524991017021安裝elasticsearch9.0.0參考:http://ww…

UI前端大數據可視化實戰策略:如何設計符合用戶認知的數據可視化界面?

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!UI前端大數據可視化實戰策略:如何設計符合用戶認知的數據可視化界面?數…

學習python第15天

其實前面學的根本不記得了,小丑.jpg,如果真的面試問到了估計也是一臉懵今日任務:JSON先認識一下JSON和JSONL文件記得之前在面試KIMI的時候,面試官就給我出了JSONL和EXCEL轉換的手撕代碼題,而那個時候,我連什…

Spring框架集成Kakfa的方式

Spring框架集成Kakfa的方式 springboot集成kafka的方式 添加maven依賴 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version> </dependency&g…

【藍橋杯 2024 省 Python B】繳納過路費

【藍橋杯 2024 省 Python B】繳納過路費 藍橋杯專欄&#xff1a;2024 省 Python B 算法競賽&#xff1a;圖論&#xff0c;生成樹&#xff0c;并查集&#xff0c;組合計數&#xff0c;kruskal 最小生成樹&#xff0c;乘法原理 題目鏈接&#xff1a;洛谷 【藍橋杯 2024 省 Python…

個性化導航新體驗:cpolar讓Dashy支持語音控制

文章目錄簡介1. 安裝Dashy2. 安裝cpolar3.配置公網訪問地址4. 固定域名訪問用 cpolar 讓 Dashy 管理個人導航站就是這么簡單&#xff01;三步輕松搞定&#xff1a;在電腦上安裝 Dashy&#xff0c;拖拽添加常用網站&#xff0c;運行 cpolar 生成遠程訪問鏈接。這個方法不僅免費&…

SQL學習記錄

基本的&#xff0c;增、刪&#xff0c;改insert into table_name (列1, 列2,...) VALUES (值1, 值2,....)Delete from 表 where keyvalueupdate 表 set keyvalue,keyvalue where keyvalue查用的最多whereSELECT prod_name, prod_price FROM Products WHERE vend idDLLO1OR ve…

零基礎學C++,函數篇~

C基礎學習&#xff08;DAY_06&#xff09;函數1. 函數的定義與使用2. 函數參數傳遞3. 變量的聲明周期4. 函數的其他特性5. 函數的嵌套與遞歸函數 1. 函數的定義與使用 ? 在設計程序時&#xff0c;如果一段代碼重復進行某種操作或者完成一個特定的功能&#xff0c;就應該將這…

react+vite+ts 組件模板

1.創建項目npm create vitelatest my-app --template react-ts2.配置項目 tsconfig.json{"compilerOptions": {"target": "ES2020","useDefineForClassFields": true,"lib": ["ES2020", "DOM", "D…

C語言 - 輸出參數詳解:從簡單示例到 alloc_chrdev_region

C語言中的輸出參數詳解&#xff1a;以 alloc_chrdev_region 為例 在學習 C 語言函數調用時&#xff0c;我們常常接觸到“輸入參數”&#xff0c;比如把一個數字傳給函數&#xff0c;讓函數幫我們算出結果。但有時候可能會發現&#xff0c;有些函數除了返回值之外&#xff0c;還…

機器視覺學習-day09-圖像矯正

1 仿射變換與透視變換1.1 仿射變換之前在圖像旋轉實驗中已經接觸過仿射變換&#xff0c;仿射變換是一個二維坐標系到另一個二維坐標系的過程&#xff0c;在仿射變換中符合直線的平直性和平行性。1.2 透視變換透視變換是把一個圖像投影到一個新的視平面的過程。在現實世界中&…

杰理ac791獲取之前版本sdk

很慚愧&#xff0c;一個如此簡單的問題卡了這么久&#xff0c;運動戰的本質就是多找線索&#xff0c;多嘗試

基于軸重轉移補償和多軸協調的粘著控制方法研究

基于軸重轉移補償和多軸協調的粘著控制方法研究 1. 論文標題 基于軸重轉移補償和多軸協調的粘著控制方法研究 2. 內容概括 該論文針對重載電力機車在復雜軌面條件下易發生空轉的問題,提出了一種新型粘著控制方法。傳統方法僅考慮單軸粘著利用而忽略軸間關系,本文設計了包…

臺達 PLC 軟件導入 EDS 文件后不能通過 PDO 控制的解決方法

一、功能及注意事項 1.功能說明&#xff1a;通過修改 EDS 文件處理臺達 PLC 軟件導入 EDS 文件后不能通過 PDO 控制的解決方法 2.注意事項&#xff1a;1).此文檔只針對立邁勝 CANopen 通訊一體化電機&#xff1b; 2).EDS 文件可以用記事本打開&#xff1b; 二、EDS 文件修改 IS…

Python庫2——Matplotlib2

上一篇文章主要介紹了Matplotlib庫中的Pyplot模塊中幾大常見圖像的繪制&#xff0c;包括自行修改圖像的屬性&#xff0c;在繪制圖像時會自動創建一個圖形窗口來展現這些圖像。本節內容繼續講講這個&#xff08;Figure&#xff09;圖像窗口即其一些常見用法。 其他python庫鏈接…

AI生成思維導圖和AI生成Excel公式

AI生成思維導圖和AI生成Excel公式 AI 生成思維導圖和 AI 生成 Excel 公式是一個完全免費的 AI 辦公合集網站。 它完全免費&#xff0c;一個網站支持多個實用 AI 辦公功能&#xff0c;包括&#xff1a;免費 AI Excel 公式生成器、輸入 Excel 公式解釋含義、AI Excel 助手、Exc…

java中的VO、DAO、BO、PO、DO、DTO

VO、DAO、BO 等對象在了解這里 po、vo、dao、之前先介紹下 MVC 開發模式M層負責與數據庫打交道&#xff1b;C層負責業務邏輯的編寫&#xff1b;V層負責給用戶展示&#xff08;針對于前后端不分離的項目&#xff0c;不分離項目那種編寫模版的方式&#xff0c;理解V的概念更直觀&…

More Effective C++ 條款16:牢記80-20準則(Remember the 80-20 Rule)

More Effective C 條款16&#xff1a;牢記80-20準則&#xff08;Remember the 80-20 Rule&#xff09;核心思想&#xff1a;軟件性能優化遵循帕累托原則&#xff08;Pareto Principle&#xff09;&#xff0c;即大約80%的性能提升來自于優化20%的關鍵代碼。識別并專注于這些關鍵…

Java中對泛型的理解

一、泛型是什么&#xff1f;1. 定義&#xff1a; 泛型允許你在定義類、接口或方法時使用類型參數&#xff08;Type Parameter&#xff09;。在使用時&#xff08;如聲明變量、創建實例時&#xff09;&#xff0c;再用具體的類型實參&#xff08;Type Argument&#xff09; 替換…

Redis開發06:使用stackexchange.redis庫結合WebAPI對redis進行增刪改查

一、接口寫法namespace WebApplication1.Controllers.Redis {[ApiController][Route("/api/[controller]")]public class RedisService : IRedisService{private readonly IConnectionMultiplexer _redis;//StackExchange.Redis庫自帶接口public RedisService(IConne…