鏈表OJ--上

文章目錄

  • 前言
  • 一、反轉鏈表
  • 二、移除鏈表元素
  • 三、鏈表中倒數第K個結點
  • 四、相交鏈表
  • 五、鏈表的中間結點


前言

一、反轉鏈表

力扣206:反轉鏈表- - -點擊此處傳送
在這里插入圖片描述
思路圖:
方法一:改變指向
在這里插入圖片描述
方法二:
在這里插入圖片描述
代碼:

//方法一
//改變指向
struct ListNode* reverseList(struct ListNode* head) {//判斷空if(head==NULL){return NULL;}struct ListNode*n1,*n2,*n3;n1=NULL;n2=head;n3=head->next;while(n2){n2->next=n1;n1=n2;n2=n3;if(n3){n3=n3->next;}}return n1;
}//方法二
//頭插
struct ListNode* reverseList(struct ListNode* head) {struct ListNode* cur = head;struct ListNode* newhead = NULL;while(cur){struct ListNode* next=cur->next;cur->next=newhead;newhead=cur;cur=next;}return newhead;
}

二、移除鏈表元素

力扣203:移除鏈表元素- - -點擊此處傳送
在這里插入圖片描述
思路圖:

在這里插入圖片描述
方法2:
當然這題也可以使用帶哨兵位的結點
在這里插入圖片描述

代碼

//方法1:
struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode*cur=head;struct ListNode*newhead=NULL;struct ListNode*tail=NULL;while(cur){if(cur->val!=val){if(tail==NULL){newhead=tail=cur;}else{tail->next=cur;tail=tail->next;}cur=cur->next;}else{struct ListNode*tmp=cur;cur=cur->next;free(tmp);}}if(tail)tail->next=NULL;return newhead; 
}//方法2:
struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* cur=head;struct ListNode* tail=NULL;struct ListNode* newhead=NULL;//哨兵位newhead=tail=(struct ListNode*)malloc(sizeof(struct ListNode));while(cur){if(cur->val!=val){//尾插tail->next=cur;tail=tail->next;cur=cur->next;}else{struct ListNode*tmp=cur;cur=cur->next;free(tmp);}}tail->next=NULL;struct ListNode*tmp=newhead;newhead=newhead->next;free(tmp);return newhead;
}

三、鏈表中倒數第K個結點

牛客網:鏈表中倒數第K個結點- - -點擊此處傳送
在這里插入圖片描述
思路圖:
在這里插入圖片描述
代碼:

//牛客網代碼模型
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {// write code herestruct ListNode* fast=pListHead;struct ListNode* slow=pListHead;while(k--){//空鏈表if(fast==NULL)return NULL;fast=fast->next;}while(fast){fast=fast->next;slow=slow->next;}return slow;
}

四、相交鏈表

力扣160:相交鏈表- - -點擊此處傳送
在這里插入圖片描述
思路圖:
在這里插入圖片描述
在這里插入圖片描述

代碼:

//思路2:
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode*curA=headA;struct ListNode*curB=headB;int lenA=0;int lenB=0;//計算鏈表A的長度while(curA->next){lenA++;curA=curA->next;}//計算鏈表B的長度while(curB->next){lenB++;curB=curB->next;}//無交點if(curA!=curB){return NULL;}//用絕對值求出差值int n=abs(lenA-lenB);struct ListNode*longList=headA;struct ListNode*shortList=headB;//若B長if(lenB>lenA){//長鏈表為BlongList=headB;//短鏈表為AshortList=headA;}//讓長鏈表B先走差值while(n--){longList=longList->next;}//兩鏈表一起走while(longList!=shortList){longList=longList->next;shortList=shortList->next;}return longList;
}

五、鏈表的中間結點

力扣876:鏈表的中間結點- - -點擊此處傳送
在這里插入圖片描述
思路圖:
在這里插入圖片描述
代碼:

struct ListNode* middleNode(struct ListNode* head) {struct ListNode*slow=head;struct ListNode*fast=head;while(fast && fast->next){slow=slow->next;fast=fast->next->next;}return slow;
}

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

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

相關文章

十一、h.264編碼

前言 測試環境: ffmpeg的4.3.2自行編譯版本windows環境qt5.12 使用H.264編碼對YUV視頻進行壓縮 ffmpeg -s 640x480 -pix_fmt yuv420p -i in.yuv -c:v libx264 out.h264 -c:v libx264是指定使用libx264作為編碼器完整代碼: H264EncodeThread.h #ifnd…

用HALCON標定助手對相機進行標定

任務要求: 已知相機鏡頭焦距f為8mm,相機單個CCD像素在水平和豎直兩個方向上的尺寸均為3.75微米,相機為普通透光鏡頭和面陣相機,對相機進行標定,測量相機的內外參數。 操作步驟: 1. 在HALCON中運行gen_ca…

C#使用whisper.net實現語音識別(語音轉文本)

目錄 介紹 效果 輸出信息 項目 代碼 下載 介紹 github地址:https://github.com/sandrohanea/whisper.net Whisper.net. Speech to text made simple using Whisper Models 模型下載地址:https://huggingface.co/sandrohanea/whisper.net/tree…

Nginx高級

Nginx高級 第一部分:擴容 通過擴容提升整體吞吐量 1.單機垂直擴容:硬件資源增加 云服務資源增加 整機:IBM、浪潮、DELL、HP等 CPU/主板:更新到主流 網卡:10G/40G網卡 磁盤:SAS(SCSI) HDD(機械…

如何使用ArcGIS Pro進行坐標轉換

不同來源的數據坐標系可能是不同的,為了統一使用這些數據就需要進行坐標轉換,ArcGIS Pro作為專業的GIS軟件,坐標轉換功能肯定也是包含的,這里為大家介紹一下ArcGIS Pro如何進行坐標轉換,希望能對你有所幫助。 數據來源…

【Exception】npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

Talk is cheap, show me the code. 環境 | Environment kversionOSwindows 11nodev18.14.2npm9.5.0 報錯日志 | Error log >npm create vitelatest Need to install the following packages:create-vite5.0.0 Ok to proceed? (y) y npm ERR! code UNABLE_TO_GET_ISSUER_…

2023亞太杯數學建模B題思路+模型+代碼+論文

2023亞太地區數學建模A題思路:開賽后第一時間更新,獲取見文末 名片 2023亞太地區數學建模B題思路:開賽后第一時間更新,獲取見文末 名片 2023亞太地區數學建模C題思路:開賽后第一時間更新,獲取見文末 名片…

idea修改行號顏色

前言 i當idea用了深色主題后,發現行號根本看不清,或者很模糊 例如下面這樣 修改行號顏色 在IntelliJ IDEA中,你可以根據自己的喜好和需求定制行號的顏色。下面是修改行號顏色的步驟: 打開 IntelliJ IDEA。 轉到 “File”&…

ChatGPT規模化服務的經驗與教訓

2022年11月30日,OpenAI發布ChatGPT,以很多人未曾預料的速度迅速走紅。與此同時,由于短時間內用戶量的暴漲,導致服務器過載,迫使OpenAI停止新用戶的注冊。 ChatGPT發布這一年,同樣的情景發生了好幾次。在最近…

opencv-圖像金字塔

圖像金字塔是一種圖像處理技術,它通過不斷降低圖像的分辨率,形成一系列圖像。金字塔分為兩種類型:高斯金字塔和拉普拉斯金字塔。 高斯金字塔(Gaussian Pyramid): 高斯金字塔是通過使用高斯濾波和降采樣&a…

專業遠程控制如何塑造安全體系?向日葵“全流程安全閉環”解析

安全是遠程控制的重中之重,作為國民級遠程控制品牌,向日葵遠程控制就極為注重安全遠控服務的塑造。近期向日葵發布了以安全和核心的新版“向日葵15”以及同步發布《貝銳向日葵遠控安全標準白皮書》(下簡稱《白皮書》),…

使用微信小程序openMapApp接口,報錯問題解決openMapApp:fail invaild coord

使用微信小程序的 openMapApp 接口時遇到了坐標無效的錯誤 (openMapApp:fail invalid coord)。這個錯誤通常是由于提供的地理坐標不符合預期的格式或范圍而引起的: 坐標格式: 確保提供的坐標符合正確的格式。常見的格式是 "緯度,經度"&#xf…

【11月比賽合集】5場可報名的「創新應用」、「數據分析」和「程序設計」大獎賽,任君挑選!

CompHub[1] 實時聚合多平臺的數據類(Kaggle、天池…)和OJ類(Leetcode、牛客…)比賽。本賬號會推送最新的比賽消息,歡迎關注! 以下信息僅供參考,以比賽官網為準 目錄 創新應用賽(1場比賽)數據分析賽&#…

逸學java【初級菜鳥篇】9.3 Stream流

hi,我是逸塵,一起學java吧 得益于Lambda所帶來的函數式編程,引入了一個全新的Stream流概念(就是都基本使用lambda的形式)。 流處理 我們首先理解什么是流處理,它類似于sql語句,可以執行非常復…

【開源】基于Vue和SpringBoot的智能教學資源庫系統

項目編號: S 050 ,文末獲取源碼。 \color{red}{項目編號:S050,文末獲取源碼。} 項目編號:S050,文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 課程檔案模塊2.3 課…

原理Redis-SkipList

SkipList ZipList和QuickList的共同特點是節省內存。在遍歷元素時,只能從頭到尾或從尾到頭,所以在查找頭尾元素性能還是不錯的,但是中間元素查詢的性能就會差。 **SkipList(跳表)**首先是鏈表,但與傳統鏈表…

【算法】鏈表-20231123

這里寫目錄標題 一、19. 刪除鏈表的倒數第 N 個結點二、21. 合并兩個有序鏈表三、24. 兩兩交換鏈表中的節點 一、19. 刪除鏈表的倒數第 N 個結點 提示 中等 給你一個鏈表,刪除鏈表的倒數第 n 個結點,并且返回鏈表的頭結點。 輸入:head [1,…

第十二章 : Spring Boot 日志框架詳解

第十二章 : Spring Boot 日志框架詳解 前言 本章知識重點:介紹了日志誕生背景,4種日志框架:Logback、Log4j、Log4j2和Slf4j的優劣勢分析,以及重點介紹了log4j2的應用示例以及配置,以及日志框架應用中遇到常見的問題以及如何處理。 背景 Java日志框架的發展歷程可以追…

在PyCharm中正確設置Python項目

大家好,在Mac和Linux都支持Python,但許多開發者發現正確設置Python項目很困難。本文匯總了多平臺中運行Python的方法,提高編程的效率,如下所示: 使用命令行運行Python。 在PyCharm(免費社區版)…

【技巧】PDF文件如何編輯?

日常辦公中我們經常會用到PDF文件,PDF具備很好的兼容性、穩定性及安全性,但卻不容易編輯,那PDF要如何編輯呢? 如果打開PDF文件就只是只讀的性質,說明文件是在線打開,或者通過PDF閱讀器打開的,這…