力扣刷題筆記——反轉鏈表

力扣(LeetCode)官網 - 全球極客摯愛的技術成長平臺

經典問題反轉鏈表

這里給出四種解法

1.雙指針

這種方法是用一個next指針記錄當前節點的下一個節點,一個pre指針記錄當前節點的前一個節點。

只需要遍歷一遍鏈表就可以完成鏈表的反轉

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode*pre,*curr;curr=head;pre=nullptr;while(curr){ListNode*next=curr->next;curr->next=pre;pre=curr;curr=next;}return pre;}
};

2.棧

這種方法使用了額外的堆棧空間,但能夠有效地反轉鏈表。

class Solution {
public:ListNode* reverseList(ListNode* head) {// 如果鏈表為空或只有一個節點,直接返回原鏈表if (!head || !head->next)return head;stack<ListNode*> stk; // 創建一個堆棧,用于存儲鏈表節點ListNode* curr = head; // 創建指針curr,用于遍歷原始鏈表// 將鏈表節點逐個壓入堆棧while (curr) {stk.push(curr);curr = curr->next;}ListNode* newhead = stk.top(); // 堆棧的頂部節點作為新鏈表的頭部curr = newhead;// 從堆棧中彈出節點,并重新連接鏈表節點while (!stk.empty()) {curr->next = stk.top();curr = curr->next;stk.pop();}curr->next = nullptr; // 將新鏈表的尾部節點的next設為nullptr,結束鏈表return newhead; // 返回新鏈表的頭部}
};

3.遞歸

利用函數的棧來輔助完成反轉

基本思想是將原始鏈表的頭部節點不斷地移到新鏈表的尾部,從而實現鏈表的反轉。這個方法不需要額外的堆棧空間,但需要小心處理鏈表節點的指針。函數將遞歸地反轉鏈表,直到鏈表的末尾,然后返回新鏈表的頭部。

首先將問題拆為兩部分

1.反轉頭節點

2.反轉頭節點之外的所有節點

class Solution {
public:ListNode* reverseList(ListNode* head) {// 如果鏈表為空或只有一個節點,直接返回原鏈表if (!head || !head->next)return head;//反轉頭節點外的所有節點// 調用遞歸函數,將head->next作為新鏈表的頭部ListNode* newhead = reverseList(head->next);//反轉頭節點// 將head節點的下一個節點的下一個指針指向head,實現反轉head->next->next = head;// 將head節點的下一個指針設為nullptr,結束新鏈表的尾部head->next = nullptr;return newhead; // 返回新鏈表的頭部}
};

4.哈希表

可以用一個哈希表來儲存每個節點的前一個節點

class Solution {
public:ListNode* reverseList(ListNode* head) {// 如果鏈表為空或只有一個節點,直接返回原鏈表if (!head || !head->next)return head;unordered_map<ListNode*, ListNode*> hash; // 創建哈希表,存儲每個節點和它們的前一個節點ListNode* curr = head; // 當前節點// 構建哈希表while (curr->next) {hash.insert({curr->next, curr}); // 存儲當前節點的下一個節點和當前節點的映射關系curr = curr->next; // 移動到下一個節點}ListNode* newhead = curr; // 新鏈表的頭部為原始鏈表的末尾curr = newhead; // 重新將curr指向新鏈表的頭部// 根據哈希表中的映射關系重新連接節點的指針while (curr) {curr->next = hash[curr]; // 重新連接節點的next指針curr = curr->next; // 移動到下一個節點}head->next = nullptr; // 將原始鏈表的頭部的next設為nullptr,結束鏈表return newhead; // 返回新鏈表的頭部}
};

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

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

相關文章

idea__SpringBoot微服務05——JSR303校驗(新注解)(新的依賴),配置文件優先級,多環境切換

JSR303校驗&#xff0c;配置文件優先級&#xff0c;多環境切換 一、JSR303數據校驗二、配置文件優先級三、多環境切換一、properties多環境切換二、yaml多環境切換————————創作不易&#xff0c;如覺不錯&#xff0c;隨手點贊&#xff0c;關注&#xff0c;收藏(*&#x…

電腦待機怎么設置?讓你的電腦更加節能

在日常使用電腦的過程中&#xff0c;合理設置待機模式是一項省電且環保的好習慣。然而&#xff0c;許多用戶對于如何設置電腦待機感到困擾。那么電腦待機怎么設置呢&#xff1f;本文將深入探討三種常用的電腦待機設置方法&#xff0c;通過詳細的步驟&#xff0c;幫助用戶更好地…

【C語言期末】題目+筆記

文章目錄 題目1.下面哪個不是C語言的基本數據類型&#xff1f;&#xff08; B &#xff09;2.C語言的標識符應以字母或&#xff08; A &#xff09;開頭。3.如果需要在C程序里調用標準函數庫中的printf函數&#xff0c;則應該在程序的開頭包含哪個頭文件&#xff1f;&#xff0…

【數據結構】順序表的定義和運算

目錄 1.初始化 2.插入 3.刪除 4.查找 5.修改 6.長度 7.遍歷 8.完整代碼 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高興與大家相識&#xff0c;希望我的博客能對你有所幫助。 &#x1f4a1;本文由Filotimo__??原創&#xff0c;首發于CSDN&#x1f4da;。 &…

web前端開發html/css練習

目標圖&#xff1a; 素材&#xff1a; 代碼&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"…

使用RSA工具進行對信息加解密

我們在開發中需要對用戶敏感數據進行加解密&#xff0c;比如密碼 這邊科普一下RSA算法 RSA是非對稱加密算法&#xff0c;與對稱加密算法不同;在對稱加密中&#xff0c;相同的密鑰用于加密和解密數據,因此密鑰的安全性至關重要;而在RSA非對稱加密中&#xff0c;有兩個密鑰&…

【USRP】5G / 6G OAI 系統 5g / 6G OAI system

面向5G/6G科研應用 USRP專門用于5G/6G產品的原型開發與驗證。該系統可以在實驗室搭建一個真實的5G 網絡&#xff0c;基于開源的代碼&#xff0c;專為科研用戶設計。 軟件無線電架構&#xff0c;構建真實5G移動通信系統 X410 采用了目前流行的異構式系統&#xff0c;融合了FP…

SQLite基本使用

目錄 1. 概述2. 引入SQLite3. 連接數據庫創建游標4. 創建數據庫文件5. 新增單條數據6. 批量新增數據7. 查詢單條數據8.查詢全部數據9. 查詢指定條數的數據10. 修改數據11. 刪除數據12. 事務回滾13. 關閉數據庫關閉游標1. 概述 SQLite是一個進程內的庫,實現了自給自足的、無服務…

【嵌入式開發 Linux 常用命令系列 4.2 -- .repo 各個目錄介紹】

文章目錄 概述.repo 目錄結構manifests/default.xmlManifest 文件的作用default.xml 文件內容示例linkfile 介紹 .repo/projects 子目錄配置和管理configHEADhooksinfo/excludeobjectsrr-cache 工作區中的對應目錄 概述 repo 是一個由 Google 開發的版本控制工具&#xff0c;它…

使用 OMSA 和 OME 工具管理多個服務器

文章目錄 Dell Remote Access Controller (iDRAC)OpenManage Server Administrator&#xff08;OMSA&#xff09;OpenManage EnterpriseSupportAssist Enterprise推薦閱讀 在DELL服務器的管理工具中&#xff0c;有多個管理工具&#xff0c;今天我們將分享這幾個工具的關聯性以及…

2023-12-08 工作心得

1 別名不能作為 同一個sql里的where里條件約束 因為別名是在查詢結果生成后才得到的&#xff0c;而 WHERE 子句是在查詢結果生成前進行的篩選操作&#xff0c;所以別名不能直接用于 WHERE 子句中的條件篩選。 2 jpa sql里如果是刪除或修改&#xff0c;加注解 modifying transa…

STM32的幾個深入功能

STM32的幾個深入功能 目錄 1、時鐘源2、鎖相環3、備份SRAM4、low power mode5、DMA Flash RAM6、復位類型7、CMSIS8、STM32F4學習方法9、中斷10、8080 并行接口11、FSMC12、ADC13、IIC14、SPI15、48516、CAN17、MPU6050六軸傳感器18、NRF24L01 2.4G無線模塊19、FLASH20、外部SR…

【Git系列】branch和tag

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

將單體應用程序遷移到微服務

多年來&#xff0c;我處理過多個單體應用&#xff0c;并將其中一些遷移到了微服務架構。我打算寫下我所學到的東西以及我從經驗中用到的策略&#xff0c;以實現成功的遷移。在這篇文章中&#xff0c;我將以AWS為例&#xff0c;但基本原則保持不變&#xff0c;可用于任何類型的基…

云原生系列1

1、虛擬機集群環境準備 VirtualBox類似vmware的虛擬化軟件&#xff0c;去官網https://www.virtualbox.org/下載最新版本免費的&#xff0c;VirtualBox中鼠標右ctrl加home跳出鼠標到wins中。 VirtualBox安裝步驟 https://blog.csdn.net/rfc2544/article/details/131338906 cent…

微信小程序:button微信開放能力打開客服會話分享到聊天框

文檔 https://developers.weixin.qq.com/miniprogram/dev/component/button.html 打開客服會話 按鈕關鍵屬性 open-type"contact"功能按鈕 <button class"mo-open-type"open-type"contact"> </button>分享 <button class&q…

Hive HWI 配置

前言 1、下載安裝好hive后&#xff0c;發現hive有hwi界面功能&#xff0c;研究下是否可以運行&#xff0c;于是使用hive –service hwi命令啟動hwi界面報錯。 啟動hwi功能 2、訪問192.168.126.110:9999/hwi&#xff0c;發現訪問錯誤 一、HWI介紹 HWI&#xff08;Hive Web Int…

【前端】CSS基礎(學習筆記)

一、簡介 1、HTML局限性 HTML只關注內容的語義&#xff0c;但是丑&#xff01; 2、CSS概要 CSS 是層疊樣式表 ( Cascading Style Sheets ) 的簡稱&#xff0c;有時我們也會稱之為 CSS 樣式表或級聯樣式表。 CSS 是也是一種標記語言 CSS 主要用于設置 HTML 頁面中的文本內…

blender 粒子系統 roughness 屬性

粒子系統中的Roughness是一種用來控制粒子的隨機性和不規則性的屬性&#xff0c;它可以影響粒子的發射方向、速度、大小、旋轉等。Roughness有以下幾個子屬性&#xff1a; - **Uniform**&#xff1a;這個屬性用來控制粒子的發射方向的隨機性&#xff0c;即粒子在法線方向上的偏…

托盤四向穿梭車自動化密集庫供應|單機智能向系統智能跨越的HEGERLS托盤四向車系統

隨著物流產業的迅猛發展&#xff0c;托盤四向穿梭式自動化密集倉儲系統可認為是在穿梭車貨架系統基礎上提出的一種新倉儲概念。托盤四向穿梭式立體庫因其在流通倉儲體系中所具有的高效密集存儲功能優勢、運作成本優勢與系統化智能化管理優勢&#xff0c;已發展為倉儲物流的主流…