【算法】鏈表-20231123

這里寫目錄標題

  • 一、19. 刪除鏈表的倒數第 N 個結點
  • 二、21. 合并兩個有序鏈表
  • 三、24. 兩兩交換鏈表中的節點

一、19. 刪除鏈表的倒數第 N 個結點

在這里插入圖片描述

提示
中等

給你一個鏈表,刪除鏈表的倒數第 n 個結點,并且返回鏈表的頭結點。

輸入:head = [1,2,3,4,5], n = 2
輸出:[1,2,3,5]
示例 2:

輸入:head = [1], n = 1
輸出:[]
示例 3:

輸入:head = [1,2], n = 1
輸出:[1]

class ListNode:def __init__(self, data, _next=None):self.data = data    #數據域self.next = _next   #指針域class Solution:def removeNthFromEnd(self, head: ListNode, n: int):pre = ListNode(0, head)   # 偽頭節點fast = pre    # 快指針,領先慢指針n+1個節點,初始為prefor _ in range(n + 1):fast = fast.next   # 后移快指針,使得快指針領先慢指針n+1個節點slow = pre    # 慢指針,用于定位要刪除節點的前一個節點# 當快指針到達鏈表末尾時,慢指針到達要刪除節點的前一個節點while fast:fast = fast.nextslow = slow.nextslow.next = slow.next.next # 將刪除節點的前一個節點的next指向刪除節點的后一個節點,即刪除了節點return pre.next

二、21. 合并兩個有序鏈表

在這里插入圖片描述

簡單

將兩個升序鏈表合并為一個新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。

示例 1:
輸入:l1 = [1,2,4], l2 = [1,3,4]
輸出:[1,1,2,3,4,4]
示例 2:

輸入:l1 = [], l2 = []
輸出:[]
示例 3:

輸入:l1 = [], l2 = [0]
輸出:[0]

思路:遞歸解法
算法流程:
初始化: 偽頭節點 dum ,節點 cur 指向 dum 。
循環合并: 當 l1或者l2為空時跳出
a 當l1.val<l2.val時:cur的后繼節點指定l1,并且l1向前走一步
b 當l1.val>l2.val時:cur的后繼節點指定l2,并且l2向前走一步
c 節點cur向前走一步,即cur=cur.next
合并剩余尾部: 跳出時有兩種情況,即 l1為空或者l2為空
a 若l1 != null為空 將 l1添加至節點cur后.
b 否則:將l2添加至節點cur之后
返回值:合并鏈表在偽頭節點dum之后,因此返回dum.next即可.

class Solution3:def mergetwolists(self,list1,list2):cur=dum=ListNode(0)while list1 and list2:if list1.val>list2.val:cur.next=list2else:cur.next=list1cur=cur.nextif list1:cur.next=list1elif list2:cur.next=list2return dum.next
l1 = [1,2,4]
l2 = [1,3,4]
S=Solution3()
print(S.mergetwolists(l1, l2))

三、24. 兩兩交換鏈表中的節點

在這里插入圖片描述

中等
2.1K
相關企業
給你一個鏈表,兩兩交換其中相鄰的節點,并返回交換后鏈表的頭節點。你必須在不修改節點內部的值的情況下完成本題(即,只能進行節點交換)。

示例 1:

輸入:head = [1,2,3,4]
輸出:[2,1,4,3]
示例 2:

輸入:head = []
輸出:[]
示例 3:

輸入:head = [1]
輸出:[1]

思路:
在這里插入圖片描述

class Solution:def swapPairs(self,head:ListNode):dummp = ListNode(0)cur=dummpdummp.next=head#存在一對可交換的節點條件:cur.next與cur.next.nextwhile cur.next and cur.next.next:A=cur.nextB=cur.next.nextcur.next=BA.next=B.nextB.next=Acur=cur.next.nextreturn dummp.next

在這里插入圖片描述

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

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

相關文章

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

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

在PyCharm中正確設置Python項目

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

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

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

Navmesh 尋路

用cocos2dx引擎簡單實現了一下navmesh的多邊形劃分&#xff0c;然后基于劃分多邊形的a*尋路。以及路徑拐點優化算法 用cocos主要是方便使用一些渲染接口和定時器。重點是實現的原理。 首先畫了一個帶有孔洞的多邊形 //多邊形的頂點數據Vec2(100, 100),Vec2(300, 200),Vec2(50…

高防服務器的工作原理

在當今互聯網時代&#xff0c;網絡安全問題日益突出&#xff0c;各種網絡攻擊層出不窮。為了保護企業的網絡安全&#xff0c;高防服務器應運而生。那么&#xff0c;你是否了解高防服務器的工作原理呢&#xff1f;下面就讓我們一起來探索一下。 高防服務器是一種能夠有效抵御各種…

語音識別入門——常用軟件及python運用

工具以及使用到的庫 ffmpegsoxaudacitypydubscipylibrosapyAudioAnalysisplotly 本文分為兩個部分&#xff1a; P1&#xff1a;如何使用ffmpeg和sox處理音頻文件 P2&#xff1a;如何編程處理音頻文件并執行基本處理 P1 處理語音數據——命令行方式 格式轉換 ffmpeg -i video…

shell 腳本循環語句

目錄 循環 echo 命令 for 循環次數 for 第二種格式 命令舉例 while 腳本舉例 雙重循環及跳出循環 腳本舉例 更改文件和目錄的后綴名的腳本 畫三角形的腳本 乘法口訣表的腳本 面試例題 補充命令 let 命令 循環 —— 一定要有跳出循環的條件 已知循環的次數 未知…

英語六級范文模板

目錄 現象解釋 觀點選擇 問題解決 六級只考議論文&#xff0c;我們將從現象解釋&#xff0c;觀點選擇&#xff0c;問題解決三個角度給出范文&#xff1a; 多次使用的句子&#xff0c;就可以作為模板記下來~~ 現象解釋 In the contemporary world, the ability to meet cha…

SQLite3

數據庫簡介 常用的數據庫 大型數據庫&#xff1a;Oracle 中型數據庫&#xff1a;Server 是微軟開發的數據庫產品&#xff0c;主要支持 windows 平臺。 小型數據庫&#xff1a;mySQL 是一個小型關系型數據庫管理系統&#xff0c;開放源碼 。(嵌入式不需要存儲太多數據。) SQL…

點云從入門到精通技術詳解100篇-基于點云數據的機器人裝焊 過程在線測量(下)

目錄 裝焊過程在線測量技術研究 4.1 測量參數介紹 4.1.1 筋板定位測量參數

Rust個人學習之結構體

第一反應&#xff0c;Rust結構體跟python的很像&#xff0c;不知道感覺對不對&#xff1b; 書中提到第一反應&#xff0c;Rust結構體跟python的很像&#xff0c;不知道感覺對不對&#xff1b; 書中提到&#xff1a;結構體是一種自定義數據類型&#xff0c;它允許命名多個相關的…

Seaborn畫圖顏色和給定的RGB hex code不一致

使用以下代碼畫圖&#xff1a; import seaborn as sns import matplotlib.pyplot as plt plt.figure(dpi150) x [A,B,C,D] y [164, 86, 126, 53] sns.barplot(xx, yy, color#3a923a) 得到的顏色如下圖所示&#xff1a; 這是因為seaborn默認降低了顏色的飽和度&#xff0c;即…

UDP中connect的作用

udpclientNoConnect.c里邊的內容如下&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #include<sys/socket.h> #include <errno.h> #include <syslog.h…

23屆萬興校招golang一面面經

問題有結合我的簡歷來問,面試官還是很友好的 1、你是如何學習go的(擴展講) go語言的基本概念和語法&#xff0c;上手golang開源項目跟架構(gin,gorm)&#xff0c;資料找官網。 2、項目深挖 為什么選擇gin? Gin路由使用了前綴樹算法&#xff0c;beego路由使用的正則算法和較為重…

基于 Flink CDC 打造企業級實時數據集成方案

本文整理自Flink數據通道的Flink負責人、Flink CDC開源社區的負責人、Apache Flink社區的PMC成員徐榜江在云棲大會開源大數據專場的分享。本篇內容主要分為四部分&#xff1a; CDC 數據實時集成的挑戰Flink CDC 核心技術解讀基于 Flink CDC 的企業級實時數據集成方案實時數據集…

獨立版求職招聘平臺小程序開發

小程序招聘系統開發 我們開發了一款高效、便捷的互聯網招聘平臺。在這里&#xff0c;可以輕松實現企業入駐、職位發布、在線求職、精準匹配職位和人才&#xff0c;以及參與招聘會等功能。目標是為求職者和企業搭建一個連接彼此的橋梁&#xff0c;幫助您更快地找到滿意的工作&…

SpringMVC(五)SpringMVC的視圖

SpringMVC中的視圖是View接口&#xff0c;視圖的作用渲染數據&#xff0c;將模型Model中的數據展示給用戶 SpringMVC視圖的種類很多&#xff0c;默認有轉發視圖(InternalResourceView)和重定向視圖(RedirectView) 當工程引入jstl的依賴&#xff0c;轉發視圖會自動轉換為JstlV…

深度學習 loss 是nan的可能原因

1 loss 損失值非常大&#xff0c;超過了浮點數的范圍&#xff0c;所以表示為overflow 狀態下的男。 解決辦法&#xff1a; 減小學習率&#xff0c;觀察loss值是不是還是nan 在將數據輸入模型前&#xff0c;進行恰當的歸一化 縮放 2 loss 的計算中存在除以0&#xff0c; log(0…

Java架構師軟件架構開發

目錄 1 基于架構的軟件開發導論2 ABSD架構方法論3 ABSD方法論具體實現4 ABSD金融業案例5 基于特定領域的軟件架構開發導論6 DSSA領域分析7 DSSA領域設計和實現8 DSSA國際電商平臺架構案例9 架構思維方法論概述10 AT方法論和案例想學習架構師構建流程請跳轉:Java架構師系統架構…

應用軟件安全編程--25考慮對函數指針進行加密

在某些情況下&#xff0c;攻擊者可以通過修改內存甚至函數指針來執行任意代碼。為了減少這類攻擊的影 響&#xff0c;函數指針應該在運行時進行加密&#xff0c;并在執行程序時才進行解密。 對于考慮對函數指針進行加密的情況&#xff0c;示例1給出了不規范用法(C/C 語言)示…