【鏈表】【雙指針】1、合并兩個有序鏈表+2、分隔鏈表+3、刪除鏈表的倒數第N個結點+4、鏈表的中間結點+5、合并兩個鏈表

3道中等+2道簡單
數組和字符串打算告一段落,正好最近做的幾乎都是雙指針,所以今天做鏈表!

1、合并兩個有序鏈表(難度:簡單)

在這里插入圖片描述

該題對應力扣網址

AC代碼

思路簡單

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode* dummy = new ListNode(-1), *p=dummy;ListNode* p1=list1, *p2=list2;while(p1!=NULL && p2!=NULL){if(p1->val<p2->val){p->next=p1;p1=p1->next;}else{p->next=p2;p2=p2->next;}p=p->next;}if(p1!=NULL){p->next=p1;}if(p2!=NULL){p->next=p2;}return dummy->next;}
};

2、分隔鏈表(難度:中等)

在這里插入圖片描述
該題對應力扣網址

AC代碼

思路比較簡單,就是把一個鏈表先拆分成兩個鏈表,再拼接。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* partition(ListNode* head, int x) {ListNode* head1=new ListNode(-1);ListNode* head2=new ListNode(-1);ListNode* p=head;ListNode* p1=head1, *p2=head2;ListNode* s;while(p!=NULL){if(p->val<x){s=new ListNode(p->val);p1->next=s;p1=s;}else{s=new ListNode(p->val);p2->next=s;p2=s;}p=p->next;}p1->next=head2->next;return head1->next;}
};

3、刪除鏈表的倒數第N個結點(難度:中等)

在這里插入圖片描述
該題對應力扣網址

AC代碼

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummy=new ListNode(-1);dummy->next=head;ListNode* p=dummy;n=n+1;while(n--){p=p->next;}ListNode* p1=dummy;ListNode* p2=p;while(p2!=NULL){p2=p2->next;p1=p1->next;}p1->next=p1->next->next;return dummy->next;}
};

4、鏈表的中間結點(難度:簡單)

在這里插入圖片描述
該題對應力扣網址

AC代碼

使用快慢指針,fast比low指針每次都多走一步。
需要注意的是,空指針的情況,在循環條件里要明確。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* middleNode(ListNode* head) {ListNode* low=head, *fast=head;while(fast!=NULL && fast->next!=NULL){low=low->next;fast=fast->next->next;}return low;}
};

5、合并兩個鏈表(難度:中等)

在這里插入圖片描述
該題力扣對應網址

AC代碼

模擬,尋常思路,不說了,有點水

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* mergeInBetween(ListNode* list1, int a, int b, ListNode* list2) {ListNode* pre=list1;for(int i=0;i<a-1;i++){pre=pre->next;}ListNode* pre1=pre;for(int j=a;j<=b;j++){pre1=pre1->next;}ListNode* rear=list2;while(rear->next!=NULL){rear=rear->next;}pre->next=list2;rear->next=pre1->next;return list1;}
};

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

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

相關文章

萬和day01代碼分析

將了數據庫的多表之間的操作&#xff0c;實際應用到JDBC中去。 一共五張表&#xff0c; info存儲的是具體的信息&#xff0c;edu job role 和info都是多對一的關系。 采用的是Java FX&#xff0c;界面采用xml去編寫。 項目理解一 在JavaFX中&#xff0c;ObservableList 是一個…

SCI一區TOP|準隨機分形搜索算法(QRFS)原理及實現【免費獲取Matlab代碼】

目錄 1.背景2.算法原理2.1算法思想2.2算法過程 3.結果展示4.參考文獻5.代碼獲取 1.背景 2024年&#xff0c;LA Beltran受到分形幾何、低差異序列啟發&#xff0c;提出了準隨機分形搜索算法&#xff08;Quasi-random Fractal Search, QRFS&#xff09;。 2.算法原理 2.1算法思…

【網絡安全】實驗三(基于Windows部署CA)

一、配置環境 打開兩臺虛擬機&#xff0c;并參照下圖&#xff0c;搭建網絡拓撲環境&#xff0c;要求兩臺虛擬的IP地址要按照圖中的標識進行設置&#xff0c;并根據搭建完成情況&#xff0c;勾選對應選項。注&#xff1a;此處的學號本人學號的最后兩位數字&#xff0c;1學號100…

Linux 搭建 Kafka 環境 - 詳細教程

目錄 一. Kafka介紹 1. 應用場景 2. 版本對比 二. Kafka安裝 1. 前置環境 &#xff08;1&#xff09;安裝JDK 2. 軟件安裝 &#xff08;3&#xff09;環境變量配置 &#xff08;3&#xff09;服務啟動 三. Console測試 基礎命令 &#xff08;1&#xff09;列出Kafk…

【c++刷題筆記-貪心】day30:56. 合并區間 、 738.單調遞增的數字

56. 合并區間 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;覆蓋區間問題&#xff0c;先排序再判斷邊界 重點&#xff1a;二維數組可以使用back&#xff08;&#xff09;函數直接更換邊界值 class Solution { public:static bool cmp(const vector<int>&a…

上網監控軟件有哪些?3款實力出眾的上網監控軟件

為什么需要上網監控軟件&#xff1f; 據說&#xff0c;99%的員工上班都會摸魚&#xff0c;1%的員工上班會竊取公司信息。 所以&#xff0c;因此&#xff0c;監控員工的上網行為是很有必要滴。 總結下來&#xff0c;上網監控軟件的作用是&#xff1a; 1.提高生產力&#xff1…

天線罩作用

天線罩是安裝在天線上的一個保護性結構&#xff0c;基本作用如下&#xff1a; 1.保護天線&#xff1a;天線罩可以保護天線免受外界環境的影響&#xff0c;如雨、雪、風、沙塵等&#xff0c;延長天線的使用壽命。 2.減少損傷&#xff1a;在天線遭受外力撞擊時&#xff0c;天線…

前端位置布局匯總

HTML中脫離文檔流的元素有&#xff1a; position: absolute - 元素相對于最近的已定位&#xff08;非 static&#xff09;祖先元素定位。 position: fixed - 元素相對于瀏覽器窗口定位。 float: left 或 float: right - 元素向左或向右浮動&#xff0c;周圍的內容會環繞它。 …

shark云原生-日志體系-filebeat高級配置(適用于生產)-更新中

文章目錄 1. filebeat.inputs 靜態日志收集器2. filebeat.autodiscover 自動發現2.1. autodiscover 和 inputs2.2. 如何配置生效2.3. Providers 提供者2.4. Providers kubernetes2.5. 配置 templates2.5.1. kubernetes 自動發現事件中的變量字段2.5.2 配置 templates 2.6. 基于…

深度學習全景進階:最新Python深度學習進階與前沿應用

查看原文>>>深度學習全景進階&#xff1a;最新Python深度學習進階與前沿應用 近年來&#xff0c;伴隨著以卷積神經網絡&#xff08;CNN&#xff09;為代表的深度學習的快速發展&#xff0c;人工智能邁入了第三次發展浪潮&#xff0c;AI技術在各個領域中的應用越來越廣…

IDEA發瘋導致maven下載回來的jar不完整zip END header not found

IDEA發瘋導致maven下載回來的jar不完整zip END header not found 具體報錯 java: 讀取D:\mavenRepository\com\alibaba\druid-spring-boot-starter\1.2.23\druid-spring-boot-starter-1.2.23.jar時出錯; zip END header not foundjava: java.lang.RuntimeException: java.io.…

2024 JuniorCryptCTF reppc 部分wp

Random cipher 文本編輯器打開附件 比較簡單。腳本 Mutated Caesar 文本編輯器打開附件 比較簡單。腳本 Pizza 附件拖入dnSpy 比較簡單。腳本 l33t Leet&#xff0c;又稱黑客語&#xff0c;是指一種發源于歐美地區的BBS、線上游戲和黑客社群所使用的文字書寫方式&#xff0c;通…

Linux:進程終止和進程替換

Linux&#xff1a;Linux&#xff1a;進程終止和進程替換 一、進程終止1.1 進程退出場景和創建退出方式 1.2 exit 和 _exit區別二、進程程序替換2.1 進程替換函數2.2 函數解釋及命名解釋函數解釋命名解釋 2.3 單進程程序替換&#xff08;無子進程&#xff09;2.3.1 帶l函數進程替…

ArduPilot開源飛控之AP_VisualOdom

ArduPilot開源飛控之AP_VisualOdom 1. 源由2. 類定義2.1 類與構造函數2.2 枚舉類型2.3 公共方法2.4 消息處理2.5 其他功能2.6 私有成員 3. 框架設計3.1 啟動代碼 AP_VisualOdom::init3.2 消息處理3.2.1 AP_VisualOdom::handle_vision_position_delta_msg3.2.2 AP_VisualOdom::h…

買的Google賬號登錄,修改輔助郵箱收不到驗證碼?可能是個簡單的錯誤

這篇文章分享一個案例&#xff0c;購買了谷歌賬號以后如何修改輔助郵箱&#xff0c;修改輔助郵箱的一些要點&#xff0c;以及常見的一個錯誤。 一、案例回放 這個朋友昨天在我的一個視頻下面留言說買了谷歌賬號以后&#xff0c;想修改輔助郵箱地址&#xff0c;但是輸入了輔助…

中英雙語介紹加拿大多倫多(Toronto)

中文版 多倫多概述 多倫多&#xff08;Toronto&#xff09;是加拿大最大的城市&#xff0c;也是北美地區重要的經濟、文化和金融中心。以下是對多倫多的詳細介紹&#xff0c;包括其經濟地位、金融中心、人口、地理位置、高等教育、移民政策、著名景點和居住的名人等方面的信息…

【Git】本地版本控制

Git 是一個分布式版本控制系統&#xff0c;用于跟蹤文件的更改&#xff0c;通常用于源代碼管理。它的設計目的是為了協同工作和版本管理&#xff0c;讓多個開發人員能夠高效地合作開發和維護代碼。 Git環境配置 在官網可以找到對應下載&#xff1a;Git - Downloads (git-scm.c…

【WebRTC實現點對點視頻通話】

介紹 WebRTC (Web Real-Time Communications) 是一個實時通訊技術&#xff0c;也是實時音視頻技術的標準和框架。簡單來說WebRTC是一個集大成的實時音視頻技術集&#xff0c;包含了各種客戶端api、音視頻編/解碼lib、流媒體傳輸協議、回聲消除、安全傳輸等。對于開發者來說可以…

avcodec_send_packet函數阻塞

用ffmpeg4.1.4開發一個播放器&#xff0c;解碼過程如下&#xff0c;在每個函數前設置標志&#xff0c;測試發現程序阻塞在avcodec_send_packet函數。 while(true){av_read_frameavcodec_send_packetavcodec_receive_frameav_packet_unref } 解釋如下&#xff1a; avcodec_se…

嵌入式Linux:如何學好嵌入式?

目錄 方法步驟 1、 基礎知識 2、 學習linux 3、 學習嵌入式linux 4、深入學習 嵌入式書籍推薦 Linux基礎 Linux內核 研發方向 硬件基礎 方法步驟 1、 基礎知識 目的:能看懂硬件工作原理,但重點在嵌入式軟件,特別是操作系統級軟件。 科目:數字電路、計算機組成原理…