[LeetBook]【學習日記】類鏈表反轉——尋找倒數第cnt個元素

來源于「Krahets」的《圖解算法數據結構》
https://leetcode.cn/leetbook/detail/illustration-of-algorithm/

題目描述

訓練計劃 II

給定一個頭節點為 head 的鏈表用于記錄一系列核心肌群訓練項目編號,請查找并返回倒數第 cnt 個訓練項目編號。

示例 1:

輸入:head = [2,4,7,8], cnt = 1 輸出:8

提示:

1 <= head.length <= 100 0 <= head[i] <= 100 1 <= cnt <= head.length

思路

  1. 兩種解法:快慢指針 / 遞歸(類似與鏈表反轉)

遞歸解法

  1. 遞歸終止條件:遍歷到最后一個節點
  2. 遞歸傳參:本輪節點的下一個節點 cur、計數值指針 pcnt
  3. 遞歸開始返回后的操作:遞減計數值
  4. 遞歸返回值:如果還未遞減計數值時,計數值已經歸零,則表面前面已經找到了正確的結果,直接返回這個結果即可;如果還未遞減計數值時,計數值不為0,則還未找到正確結果,應該遞減計數值并判斷,本輪找到了就返回即可,沒找到就返回空
/*** 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* recuList(ListNode* cur, int* pcnt){if(!cur) return nullptr;//遞歸終止條件:遍歷到最后一個節點ListNode* res = recuList(cur->next, pcnt);//進行遞歸傳參//如果計數還沒減就為0了,說明前面已經找到了正確的結果,直接使用正確的函數返回值返回if(*pcnt == 0) return res;//否則就是還沒找到正確結果,遞減計數器并判斷本輪節點是否就是要找的節點--(*pcnt);if(*pcnt == 0) return cur;//本輪未找到正確的元素,返回空return nullptr;}ListNode* trainingPlan(ListNode* head, int cnt) {return recuList(head, &cnt);}
};

快慢指針

  • 這個方法基于一個樸素的思想,就是讓兩個指針相距 cnt,然后同時移動這兩個指針,直到快指針 fast 遍歷到鏈表尾,此時由于兩個指針相距 cnt,慢指針 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* trainingPlan(ListNode* head, int cnt) {ListNode* fast = head;ListNode* low = head;for(int i=cnt; i>0; --i){fast = fast->next;}while(fast){fast = fast->next;low = low->next;}return low;}
};

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

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

相關文章

守護無價數據:文件備份的重要性與實用策略

一、數據安全&#xff1a;為何文件備份至關重要 在數字化時代&#xff0c;我們的生活和工作越來越離不開電子設備與其中的文件數據。這些文件可能包含重要的工作文檔、珍貴的家庭照片、個人的創意作品等&#xff0c;它們是我們回憶的載體&#xff0c;也是我們工作和創新的基石…

PDF Expert for Mac v3.9.2中文激活版下載

PDF Expert for Mac是一款易于使用的 PDF 編輯器和注釋器&#xff0c;專為 Mac 設備設計。它允許用戶輕松查看、編輯、簽名、注釋和共享 PDF。該軟件使用戶能夠向他們的 PDF 添加文本、圖像、鏈接和形狀&#xff0c;突出顯示和標記文本&#xff0c;填寫表格以及簽署數字文檔。它…

金融行業專題|期貨超融合架構轉型與場景探索合集(2023版)

更新內容&#xff1a; 更新 SmartX 超融合在期貨行業的覆蓋范圍、部署規模與應用場景。新增 CTP 主席系統實踐與評測、容器云資源池等場景實踐。更多超融合金融核心生產業務場景實踐&#xff0c;歡迎下載閱讀電子書《SmartX 金融核心生產業務場景探索文章合集》。 面對不斷變…

Golang中的四個括號

代碼如下&#xff0c;首先第一個括號內容為wk *worker表示這個函數是一個方法&#xff0c;屬于結構體worker的方法&#xff0c;第二個括號內容為say string&#xff0c;是方法的參數&#xff0c;第三個括號內容err error是方法的返回值&#xff0c;第四個括號是work方法內部的匿…

mac iNode 斷開后沒網 經測試 后臺還在運行

界面斷開&#xff0c;但是連不上網&#xff1a;實際上可能是服務在后臺還在運行 解決方式&#xff1a;終端執行命令 &#xff0c;手動停止iNode服務 sudo /Library/StartupItems/iNodeAuthService/iNodeAuthService stop 停掉之后&#xff0c;有可能連不上網&#xff0c;斷開wi…

基于springboot+vue的美食推薦商城

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

網工必懂的ICMP協議

福建廈門微思網絡始于2002年&#xff0c;面向全國招生&#xff01; 主要課程&#xff1a;華為、思科、紅帽、Oracle、VMware、CISP安全系列、PMP....... 網絡工程師實用課程華為HCIA課程介紹 網絡工程師使用課程華為HCIP課程介紹 網絡工程師使用課程華為HCIE課程介紹 因特網…

更詳細的軟件測試理論基礎:流程,開發、測試模型,測試分類,測試用例及其設計方法,缺陷

文章目錄 一、測試流程二、開發模型1、 瀑布模型2、增量模型3、快速模型4、其他 三、測試模型1、V模型2、W模型 四、測試分類五、測試用例 test case六、測試用例設計方法1、等價類劃分法2、邊界值分析法3、因果圖法4、判定表法5、正交法6、場景法7、流程分析法8、錯誤推測法方…

數據分析-Pandas數據的探查面積圖

數據分析-Pandas數據的探查面積圖 數據分析和處理中&#xff0c;難免會遇到各種數據&#xff0c;那么數據呈現怎樣的規律呢&#xff1f;不管金融數據&#xff0c;風控數據&#xff0c;營銷數據等等&#xff0c;莫不如此。如何通過圖示展示數據的規律&#xff1f; 數據表&…

第16章-DNS

目錄 1. 域名 1.1 產生背景 1.2 概述 1.3 域名的樹形層次化結構 2. DNS 2.1 概述 2.2 工作機制 3. DNS查詢模式 3.1 遞歸查詢&#xff1a; 3.2 迭代查詢&#xff1a; 4. 相關知識點 4.1 集中式DNS 4.2 國內通用DNS 4.3 配置DNS代理 1. 域名 1.1 產生背景 ① IP…

【Excel PDF 系列】iText 庫直接實現表格 PDF

你知道的越多&#xff0c;你不知道的越多 點贊再看&#xff0c;養成習慣 如果您有疑問或者見解&#xff0c;歡迎指教&#xff1a; 企鵝&#xff1a;869192208 文章目錄 前言生成表格 PDF 效果引入 pom 配置代碼實現定義 CreateExcelToPdfModel 對象主方法 前言 最近遇到生成 E…

Java必須掌握的繼承中的構造方法和this super關鍵字(含面試大廠題和源碼)

在Java中&#xff0c;繼承中的構造方法和關鍵字this、super是面試中經常涉及的重要話題。下面是一個潛在的大廠面試題&#xff0c;以及可能的解答和討論。 面試題&#xff1a; 請解釋Java中繼承中構造方法的作用以及關鍵字this和super的使用場景。請提供示例代碼加以說明。 …

EchoServer回顯服務器簡單測試

目錄 工具介紹 工具使用 測試結果 工具介紹 github的一個開源項目,是一個測壓工具 EZLippi/WebBench: Webbench是Radim Kolar在1997年寫的一個在linux下使用的非常簡單的網站壓測工具。它使用fork()模擬多個客戶端同時訪問我們設定的URL&#xff0c;測試網站在壓力下工作的…

ARMv8-A電源管理Power management

目錄 一、ARMv8-A電源管理概述 二、idle管理 2.1 電源和時鐘 Standby-待機 Retention-保持 Powerdown-關機 Dormant mode-休眠模式 Hotplug-熱插拔 三、動態電壓和頻率調節 四、匯編語言power指令 五、電源狀態協調接口 一、ARMv8-A電源管理概述 許多ARM系統是移動…

二維碼門樓牌管理系統:城市數字化管理的新里程碑

文章目錄 前言一、二維碼門樓牌管理系統的構成二、二維碼門樓牌管理系統的功能三、二維碼門樓牌管理系統的應用四、二維碼門樓牌管理系統的未來發展 前言 隨著城市管理的數字化、智能化水平不斷提升&#xff0c;二維碼門樓牌管理系統作為一種創新的城市管理方法&#xff0c;正…

JavaScript 學習總結(17)—— 前端開發規范之命名規范、html 規范、css 規范、js 規范

前言 一個好的程序員肯定是要能書寫可維護的代碼,而不是一次性的代碼,怎么能讓團隊當中其他人甚至一段時間時候你再看你某個時候寫的代碼也能看懂呢,這就需要規范你的代碼了。我是有一點強迫癥的人,上周我們后端給我了一個CanUsename的接口(該接口的目的是判斷輸入的目的…

Ubuntu20.04: UE4.27 中 Source Code 的編輯器下拉框沒有 Rider選項

問題描述 最近想用 Rider 作為 UE4 開發的 IDE&#xff0c;但安裝好 Rider 后&#xff0c;發現編輯器下拉框中沒有 Rider 的選項&#xff0c;我檢查了 UE4 的插件&#xff0c;發現 Rider Integration 插件已經安裝且啟用的。 環境&#xff1a;Ubuntu 20.04 UE4.27 Rider2023…

應急加電電源車-在航空航天、武器等多領域的應用

應急加電電源車是一種專門設計用于在緊急情況下為其他設備提供電力支持的車輛。它通常由電池或燃料電池驅動&#xff0c;可以在沒有外部電源的情況下為其他設備提供持續的電力供應。這種車輛在災難救援、野外作業、軍事行動等領域具有廣泛的應用。 應急加電電源車通常具有以下…

WordPress建站入門教程:如何在本地電腦搭建WordPress網站?

前面跟大家分享了『WordPress建站入門教程&#xff1a;如何安裝本地WordPress網站運行環境&#xff1f;』&#xff0c;接下來boke112百科就繼續跟大家分享本地電腦如何搭建WordPress網站。 小皮面板&#xff08;phpstudy&#xff09;的“軟件管理 – 網站程序”雖然可以一鍵部…

Springboot+vue的高校教師教研信息填報系統(有報告)。Javaee項目,springboot vue前后端分離項目。

演示視頻&#xff1a; Springbootvue的高校教師教研信息填報系統&#xff08;有報告&#xff09;。Javaee項目&#xff0c;springboot vue前后端分離項目。 項目介紹&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&am…