Leetcode 206. 反轉鏈表 迭代/遞歸

原題鏈接:Leetcode 206. 反轉鏈表

在這里插入圖片描述

解法一:迭代

/*** 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* reverseList(ListNode* head) {if(head==nullptr) return nullptr;ListNode* pre = nullptr;ListNode* now = head;while(now){ListNode* next = now->next;now->next = pre;pre = now;now = next;}return pre;}
};

解法二:遞歸

/*** 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* reverseList(ListNode *head) {if(head==nullptr || head->next==nullptr) return head;// 「遞」到鏈表末尾,拿到新鏈表的頭節點(舊鏈表的尾節點)ListNode* newhead = reverseList(head->next);// 讓下一個節點指向自己head->next->next = head;// 斷開原來的指針head->next = nullptr;return newhead;}
};
// 鏈表:1 -> 2 -> 3 -> 4 -> 5
// 遞歸調用順序:
// reverseList(1)
//     reverseList(2)
//         reverseList(3)
//             reverseList(4)
//                 reverseList(5)
// 5->next==nullptr,返回 5
// newhead=5,head=4, 4->next=5, 5->next = 4(反轉),4->next=nullptr
// newhead=5,head=3, 3->next=4, 4->next = 3(反轉),3->next=nullptr
// newhead=5,head=2, 2->next=3, 3->next = 2(反轉),2->next=nullptr
// newhead=5,head=1, 1->next=2, 2->next = 1(反轉),1->next=nullptr
// return  newhead=5

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

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

相關文章

C++11新特性 | 歡迎來到現代C++的世界!

左值與右值 左值與右值的概念 可以被取地址的值為左值(left value,簡稱lvalue),否則為右值(right value,簡稱rvalue)。 常見的左值、右值例子: // >>>>>>> 左值…

因為對象裝箱拆箱導致的空指針異常

今天業務突然提了個事件單,客戶添加承租人一直報錯,但是很奇怪,報錯信息是空的二話不說,先跟API組要了接口和參數,然后看日志然鵝,這個接口并沒有打印日志,只有一個e.printStackTrace()然后靜下…

Rust 在 Windows 環境下交叉編譯其他操作系統可執行文件的詳細指南

前言:為什么需要交叉編譯? 想象一下這樣的場景:你在 Windows 電腦上開發了一個 Rust 程序,希望它能在 Linux 服務器上運行,或者在朋友的 macOS 電腦上測試 —— 總不能為了編譯不同系統的版本,專門買一臺 …

Ubuntu系統配置鏡像源

要修改的文件 /etc/apt/sources.list操作步驟 1. 備份原文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2. 編輯文件 sudo nano /etc/apt/sources.list3. 清空文件內容,填入以下內容 先獲取Ubuntu版本代號: lsb_release -cs然后根據版本填…

【Spring Cloud Alibaba】Sentinel(一)

【Spring Cloud Alibaba】Sentinel(一)1. 簡介2. 服務雪崩1. 簡介 Sentinel 是阿里巴巴開源的分布式系統的流量防護組件,主要用來做流量控制、熔斷降級、系統保護。它的定位類似于 Hystrix,但更側重在 流量治理 上。目前在微服務…

Delphi 5 操作Word表格選區問題解析

在 Delphi 5 中操作 Word 時,您遇到的 Selection.MoveDown 方法選中整行而不是僅移動一行的原因與 Word 的選擇機制和單元格內部結構有關。以下是詳細解釋和解決方案:問題分析單元格的選區范圍:當使用 .Cell(r, c).Select 選中單元格時&#…

小米fastboot不能被電腦識別但手機正常使用模式時能被電腦識別

小米手機USB連接電腦不識別解決方法 – MIUI歷史版本 小米手機USB連接電腦不識別解決方法 問題經驗 手機連接電腦通常會自動安裝驅動,如果驅動安裝失敗或是電腦不能識別手機設備,可嘗試下面方法。 1. 嘗試換根 USB 數據線,最好是手機原…

Git 版本管理工具基本操作匯總—命令總結

通常,很多朋友在使用 Git 的時候都會直接用 IDE 中集成的插件或者自帶的工具等來實現代碼的拉取、提交、合并以及其他操作,當然這肯定也是可以的,但是長期這樣子操作,我們就會忽略掉 Git 業務運行的底層邏輯。那么,我這…

自學嵌入式第三十三天:網絡編程-UDP

一、OSI模型(open system interconnect)開放系統互聯模型,分為7層應用層:為網絡用戶提供各種服務,例如電子郵件、文件傳輸等;表示層:為不同主機間的通信提供統一的數據表示形式。加密解密,壓縮;…

A*(Astar)算法詳解與應用

算法背景A*(A-Star)算法是一種在圖形平面上,有多個節點的路徑中,求出最低通過成本的算法。其歷史可以追溯到早期的圖搜索算法,如Dijkstra算法和貪心最佳優先搜索(Greedy Best-First Search)。是…

word刪除指定頁面

常規程序因為wps的 .docx 文件是基于段落和節的結構,而不是“物理頁”,所以無法直接按“第幾頁”刪除在普通程序里面無法讀取到他的頁碼,但是在宏編程里面他能讀取到頁碼,我們就根據宏編程來這樣刪除。程序會自動打開選擇要刪除的…

RK3568平臺開發系列講解:瑞芯微平臺4G模塊篇移植

更多內容可以加入Linux系統知識庫套餐(教程+視頻+答疑) ??返回專欄總目錄 文章目錄 一、硬件圖片 二、功能宏 三、增加PID/VID 支持 3.1、usb_device_id 結構體 3.2、usb_device_id 的注冊 沉淀、分享、成長,讓自己和他人都能有所收獲!?? 一、硬件圖片 目標: 結果…

面試 (一)

目錄 1. HashMap是怎么解決沖突的 是用什么數據結構實現的 2. 為什么hashmap的初始長度為16 3. 多線程的核心參數 4. 多線程怎么工作的 5. CISCS是怎么實現的 6. JUC知識 7. C和java的區別 8. JVM底層編譯的東西 9. 公平鎖和非公平鎖 10. 有人惡意攻擊你的平臺每秒發送…

計算機畢設選題:基于Python+Django的健康飲食管理系統設計【源碼+文檔+調試】

精彩專欄推薦訂閱:在 下方專欄👇🏻👇🏻👇🏻👇🏻 💖🔥作者主頁:計算機畢設木哥🔥 💖 文章目錄 一、項目介紹二…

vscode terminal遠程連接linux服務器GUI圖形界面

看了很多教程,不清楚具體原理,但總之自己是摸索出來了: 1.下載vcxsrv,最后雙擊exe程序啟動: 每一步的配置如下:2.修改配置 vscode中按下“ctrlshiftp”,然后輸入“Remote-SSH: Open SSH Configu…

文檔外發管理產品哪個品牌強?安全與效率雙優產品推薦

在企業間協作日益加深的今天,企業對文檔外發管理相關產品的安全性和效率要求越來越高。無論是日常業務協作,還是跨組織數據交換,如何確保文件在傳輸過程中不被泄露、篡改,同時又能高效流轉,成為企業IT管理的重要課題。…

【教程】2025 IDEA 快速創建springboot(maven)項目

第一步:【新建】-【module】,左邊選擇springboot,右邊填寫相關信息。第二步:選擇相關依賴。第三步:刪掉一些無關的文件,保持項目簡潔創建springboot項目已經結束了,下面是構建項目的架構以及環境…

【小白筆記】移動硬盤為什么總比電腦更容易滿?

我明明只復制了10個G的文件,為什么我的移動硬盤就滿了? 大家好,我是個剛入門的小白,最近遇到了一個讓我百思不得其解的問題。我把電腦里的一些文件,總共加起來也就10個G左右,心想移動硬盤還有幾十個G的空位…

單獨一篇云原生介紹

云原生(Cloud Native)?不是單一技術,而是一套構建和運行應用程序的完整方法論?,旨在充分利用云計算的優勢(彈性、按需資源、分布式環境)來構建?高韌性、可擴展、易于管理的應用?。它的核心思想是讓應用…