力扣——23合并升序鏈表

目錄

1:題目描述:

2.算法思想:

3.代碼展示:

1:題目描述:

給你一個鏈表數組,每個鏈表都已經按升序排列。

請你將所有鏈表合并到一個升序鏈表中,返回合并后的鏈表。

示例 1:

輸入:lists = [[1,4,5],[1,3,4],[2,6]]
輸出:[1,1,2,3,4,4,5,6]
解釋:鏈表數組如下:
[1->4->5,1->3->4,2->6
]
將它們合并到一個有序鏈表中得到。
1->1->2->3->4->4->5->6

示例 2:

輸入:lists = []
輸出:[]

示例 3:

輸入:lists = [[]]
輸出:[]

2.算法思想:

  1. 義比較器??:

    • 由于priority_queue默認是大根堆(堆頂元素最大),而我們希望每次取出最小的元素
    • 自定義比較器Compare,當l1->val > l2->val時返回true,這樣構造出小根堆
  2. ??初始化優先級隊列??:

    • 創建一個存儲ListNode*的小根堆pq
  3. ??將所有鏈表元素入隊??:

    • 遍歷輸入的lists數組
    • 對于每個鏈表,從頭節點開始,將所有節點依次加入優先級隊列
    • 注意:這里直接將原鏈表的節點拆散加入隊列,會破壞原鏈表結構
  4. ??構建結果鏈表??:

    • 創建一個虛擬頭節點dummy簡化操作
    • 使用指針p跟蹤當前鏈表的末尾
    • 循環從優先級隊列中取出最小元素(堆頂):
      • 將取出的節點連接到p->next
      • p移動到新連接的節點
      • 從隊列中移除該節點
  5. ??返回結果??:

    • 返回dummy.next,即合并后的鏈表頭節點

3.代碼展示:

 //因為priority_queue默認是大根堆,堆頂是最大的元素,所以我們需要自定比較器,讓它從小到大class Compare {public:bool operator()(ListNode* l1, ListNode* l2) {return l1->val > l2->val;}
};ListNode* mergeKLists(vector<ListNode*>& lists) {//使用優先級隊列,priority_queue<ListNode*, vector<ListNode*>, Compare>pq;//把lists的每個元素都入隊for (int i = 0; i < lists.size(); i++) {while (lists[i]){pq.push(lists[i]);lists[i] = lists[i]->next;}}//重新定義一個鏈表ListNode dummy(-1);ListNode* p = &dummy;//始終指向最后一個元素,開始鏈表為空,故指向頭節點//接下來開始循環pq,while (!pq.empty()){p->next = pq.top();pq.pop();p = p -> next;}return dummy.next;}

23. 合并 K 個升序鏈表 - 力扣(LeetCode)https://leetcode.cn/problems/merge-k-sorted-lists/

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

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

相關文章

AI重構危化品進口清關:一場效率與安全的雙重革命

在全球化工產業鏈深度捆綁的今天&#xff0c;每年超過3億噸危險化學品通過中國各大口岸流入國內市場。這些支撐著新能源電池、半導體材料等戰略產業的“工業血液”&#xff0c;其進口清關流程卻長期困于效率與安全的兩難困境&#xff1a;人工審核單據平均耗時72小時&#xff0c…

牛客網題解 | 棧的壓入、彈出序列

棧的壓入、彈出序列 一、題目鏈接二、題目三、算法原理&#xff1a;用一個棧模擬入棧出棧的過程四、編寫代碼 一、題目鏈接 棧的壓入、彈出序列 二、題目 三、算法原理&#xff1a;用一個棧模擬入棧出棧的過程 思路&#xff1a;用一個棧模擬入棧出棧的過程&#xff0c;模擬出…

使用CubeMX新建DMA工程——存儲器到存儲器模式

目錄 1、新建板級支持包 2、修改main.c 3、程序流程 4、問題 新建工程的基本操作步驟參考這里&#xff1a; 【【野火】STM32 HAL庫開發實戰指南 教學視頻 手把手教學STM32全系列 零基礎入門CubeMXHAL庫&#xff0c;基于野火全系列STM32開發板】 https://www.bilibili.com/…

HTML5 新增的主要標簽整理

一、語義化標簽&#xff08;讓網頁結構更清晰&#xff09; 1. <header> 和 <footer> 定義&#xff1a;表示網頁的「頂部區域」和「底部區域」。場景&#xff1a; <header>&#xff1a;放 Logo、導航欄、搜索框。<footer>&#xff1a;放版權信息、聯系…

Mysql數據庫高可用解決方案-Mysql Router

目錄 一.MySQL Router介紹 1. 什么是 MySQL Router&#xff1f; 2. MySQL Router 的主要用途 3. MySQL Router 的工作原理 4. MySQL Router 的核心組件 5. MySQL Router 的部署和配置 6. MySQL Router 的優勢 7. 注意事項 8. MySQL Router 與其他工具的對比 9. 總結 …

【學習筆記】機器學習(Machine Learning) | 第六周|過擬合問題

機器學習&#xff08;Machine Learning&#xff09; 簡要聲明 基于吳恩達教授(Andrew Ng)課程視頻 BiliBili課程資源 文章目錄 機器學習&#xff08;Machine Learning&#xff09;簡要聲明 摘要過擬合與欠擬合問題一、回歸問題中的過擬合1. 欠擬合&#xff08;Underfit&#x…

當算力遇上堵車:AI如何讓城市血管不再“血栓”?

目錄 一、算力治堵的“外科手術” 二、算力治堵的“內科檢查” 三、算力治堵的“中醫調理” 治堵如治水,算力是新時代的“大禹” “堵車”是每個大城市的通病,但鮮少有人意識到:交通擁堵的根源并非車輛過多,而在于車速過慢,不是因為堵車才慢,而是因為慢才堵車。中國工…

VM虛擬機安裝CentOS7.9

目錄 1.下載CentOS7.9 2.VM虛擬機選擇自定義&#xff0c;然后一直傻瓜式下一步 3.選擇編輯虛擬機設置&#xff0c;然后選擇剛剛下載的ISO 4.輸入 ip addr 獲取ip地址 5.用Xshell連接 1.下載CentOS7.9 鏈接&#xff1a;https://pan.baidu.com/s/1kW2gGWnbcjNtq4kz46LKVw?p…

文本解析到大模型應用

文本解析到到大模型應用 一、背景 最近接到一個比較惡心的工作&#xff0c;之前有個同事將很多個小的文檔整合到了一個大文檔中&#xff0c;同時暴露出一個新的問題&#xff0c;大的文檔雖然查找問題比較方便但是維護起來較為麻煩&#xff0c;所以需要將大的文檔按照標題拆分…

AWS虛擬專用網絡全解析:從基礎到高級實踐

導語 AWS虛擬專用網絡是連接企業本地數據中心與AWS云環境的關鍵橋梁。本文將深入探討AWS VPN的核心概念、配置方法、最佳實踐以及常見問題解決方案,助您構建安全、可靠的混合云網絡架構。 一、AWS VPN概述 1. 定義 AWS VPN是一種網絡服務,允許用戶通過加密隧道將本地網絡…

【含文檔+PPT+源碼】基于微信小程序的校園快遞平臺

項目介紹 本課程演示的是一款基于微信小程序的校園快遞平臺&#xff0c;主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含&#xff1a;項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套系統 3.該項目附帶…

基于 Rancher 部署 Kubernetes 集群的工程實踐指南

一、現狀分析 在當今的云計算和容器化領域&#xff0c;Kubernetes&#xff08;K8S&#xff09;已經成為了容器編排和管理的事實標準。根據 Gartner 的數據&#xff0c;超過 70% 的企業在生產環境中使用 K8S 來管理容器化應用。然而&#xff0c;K8S 的安裝和管理對于許多企業來…

Windows服務器提權實戰:常見方法、場景與防御指南

在滲透測試中&#xff0c;??權限提升&#xff08;提權&#xff09;??是從低權限賬戶&#xff08;如IIS、Apache運行賬戶&#xff09;獲取系統管理員&#xff08;如SYSTEM&#xff09;權限的關鍵步驟。本文將從實戰角度解析Windows服務器提權的常見技術&#xff0c;并結合真…

C# | 基于C#實現的BDS NMEA-0183數據解析上位機

以下是一個基于C#實現的BDS NMEA-0183數據解析上位機的示例代碼,包含基礎功能和界面: using System; using System.Collections.Generic; using System.IO.Ports; using System.Windows.Forms; using System.Drawing; using System.Globalization;namespace BDS_NMEA_Viewer…

圖像增強技術:從基礎原理到企業級開發實戰

簡介 圖像增強技術是提升圖像質量、改善視覺效果和提高后續處理效果的核心方法。本文將全面解析圖像增強的五大核心技術:灰度級修正、圖像平滑、圖像銳化、圖像偽彩色處理和圖像幾何校正,并提供基于OpenCV和Elasticmagic的完整企業級開發實戰代碼。通過系統化的知識整理和可…

解決中文亂碼:字符編碼全攻略 - ASCII、Unicode、UTF-8、GB2312詳解

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;精通Java編…

體系學習1:C語言與指針1——預定義、進制打印、傳參為數組

1、不對一段代碼進行編譯 #if 0 statement #endif2、輸出地址 int d[3]{1,2,3}; printf("%p",(void*)d);//p期待的是void*類型的數據3、不同進制的打印 int data 1200; char hed[9];//為\0預留位置&#xff01;&#xff01;&#xff01; sprintf(hed,"%08X&…

Java 基礎--數組(Array):存儲數據的“排排坐”

作者&#xff1a;IvanCodes 發布時間&#xff1a;2025年5月1日&#x1f913; 專欄&#xff1a;Java教程 大家好&#xff01;&#x1f44b; 咱們在編程時&#xff0c;經常需要處理一批相同類型的數據&#xff0c;比如班級里所有同學的成績 &#x1f4af;、一周每天的最高氣溫 …

CSS常用屬性_(進階)

目錄 1.尺寸單位與顏色 &#xff08;1&#xff09;尺寸 &#xff08;2&#xff09;顏色 常用2種 &#xff08;3&#xff09;顏色屬性值&#xff08;透明度&#xff09; 例如&#xff1a; 2.字體屬性font 例如&#xff1a; **順序 3.文本屬性 ?編輯例如&#xff1a; …

【RabbitMQ】保證消息不丟失

要確保 RabbitMQ 在消費者&#xff08;Python 服務&#xff09;重啟或掛掉時消息不丟失&#xff0c;需結合 消息持久化、確認機制&#xff08;ACK&#xff09; 和 死信隊列&#xff08;DLX&#xff09; 實現高可靠性&#xff1a; 1. 消息持久化&#xff08;Durability&#xff…