leetcode系列:反轉鏈表的形象表示

反轉鏈表是一道比較簡單的題,主要考察的是對鏈表數據結構的理解和雙指針應用,比較容易出錯的地方是指針的移動順序。在練習的過程中想到了一個比較形象的表示方法,于是記錄下來。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:pre = Nonecur = head while cur:tmp = cur.next cur.next = prepre = curcur = tmpreturn pre

1. 首先pre的定義是建立在對鏈表的理解上的,最終鏈表的head因為沒有next節點,所以就是None。這個pre既是在后面表示前一個節點,又是在初始化時表示了反轉后鏈表的尾部,這樣就能理解為什么要定義pre。

2. cur表示當前節點,之后的while循環也是建立在cur上的,當cur為none了,表示這個鏈表遍歷到尾部了。

3. tmp = cur.next和cur.next = pre這兩句可以按照下面的圖片理解:

????????本來A->cur->C是一個鏈表,如第一行;

????????tmp = cur.next其實相當于把cur->C的鏈接砍斷,把C先存到別的地方去,如第二行;

????????cur.next = pre相當于把A->cur的鏈接砍斷后添加了一個反向的鏈接,如第三行和第四行;

? ? ? ? 這兩個操作后實現了cur->A,那么接下來的步驟就是該把C->cur了。

4. pre = cur和cur = tmp就是在把指針向后移,重復上面3的步驟,把C->cur。注意:在這個操作后pre就指向了cur,cur已經指向tmp,所以最后return的是pre而不是cur。

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

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

相關文章

地理信息系統概論

地理信息系統概論 第一章導論第二章地理信息系統的數據結構第三章空間數據的處理第四章地理信息系統空間數據庫第五章空間分析的原理與方法第六章地理信息系統的應用模型第七章地理信息系統的設計與評價第八章地理信息系統產品的輸出與設計 第一章導論 數據與信息的關系&#…

Java基礎-java.util.Scanner接收用戶輸入

目錄 1. 導入所需要的jar包2. 編寫代碼運行3. 輸出運行結果 1. 導入所需要的jar包 import java.util.Scanner;2. 編寫代碼運行 public class ScannerDemo {public static void main(String[] args) {/** 使用Scanner接收用戶鍵盤輸入的數據* 1. 導包:告訴程序去JD…

【Python】translate包報錯RuntimeError: generator raised StopIteration

根據網上有些教程,使用translate包翻譯稍微復雜語句的時候,會報錯RuntimeError: generator raised StopIteration 實際測試之后發現,主要是from_lang、to_lang兩個參數的設置有問題,比如有人說中文寫"Chinese"、"Z…

Mysql、Oracle安全項檢查表及操作腳本

軟件開發全資料獲取:點我獲取 Mysql檢查表 Oracle檢查表

【華為OD題庫-073】字符串變換最小字符串-java

題目 題目描述: 給定一個字符串s,最多只能進行一次變換,返回變換后能得到的最小字符串(按照字典序進行比較)。變換規則:交換字符串中任意兩個不同位置的字符。 輸入描述: —串小寫字母組成的字符串s 輸出描述: 按照要求進行變換得到的最小字符串 備注: s…

Anaconda建虛擬環境并在jupyter中打開

1.假設要用yaml格式創建虛擬環境 從開始里打開anaconda powersheel 輸入以下 conda env create -f environment.yaml conda activate env_name activate以下虛擬環境 修改名稱 如果不用yaml也可以用 conda create --name my_first_env python3.6 這個來指定 2.(base)變(…

C語言 位運算符 + 應用

常用的位運算符 按位與 快速判斷整數的奇偶性 奇數的二進制表示的最低位為1,偶數的二進制表示的最低位為0。 int num 9; if (num & 1) {// num 是奇數 } else {// num 是偶數 }按位異或 交換兩個變量的值 int a 5; int b 7; a a ^ b; b a ^ b; a a ^ …

udemy angular decoration 自存

番外 為什么一個ts文件變成了component,因為它使用了components裝飾器 components is just a class,you export it so angular know how to use it 舉例:組件裝飾器 decoration前總是有一個符號 decoration的作用(之一?) NgModu…

【漏洞復現】獅子魚任意文件上傳漏洞

漏洞描述 獅子魚CMS(Content Management System)是一種網站管理系統,旨在幫助用戶更輕松地創建和管理網站。它具有用戶友好的界面和豐富的功能,包括頁面管理、博客、新聞、產品展示等。 獅子魚CMS使用簡單直觀的管理界面,使得網站所有者可以方便地進行內容的發布、管理和…

深入探索 Java 反射機制

文章目錄 什么是 Java 反射?反射的核心類和接口反射的基本用法獲取 Class 對象的三種方式創建對象實例訪問字段和方法調用構造方法 反射的使用場景注意事項結語 Java反射(Reflection)是指在運行時獲取類的信息,特別是獲取其屬性、…

分享一個用C#寫的Aspose.Words生成word的工具類

公共類 標題樣式 字體大小 margin設置 標題 h1-h6 namespace Common.Bo {public class TitleStyle{/// <summary>/// 標題樣式/// </summary>/// <param name"tag"></param>/// <param name"fontSize"></param>/// &…

使用 Tailwind CSS 完成導航欄效果

使用 Tailwind CSS 完成導航欄效果 本文將向您介紹如何使用 Tailwind CSS 創建一個漂亮的導航欄。通過逐步演示和示例代碼&#xff0c;您將學習如何使用 Tailwind CSS 的類來設計和定制導航欄的樣式。 準備工作 在開始之前&#xff0c;請確保已經安裝了 Tailwind CSS。如果沒…

求小球落地5次后所經歷的路程和第5次反彈的高度

假設一個球從任意高度自由落下&#xff0c;每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地時&#xff0c;共經歷多少米?第5次反彈多高&#xff1f; 數據范圍&#xff1a;輸入的小球初始高度滿足1≤n≤1000 &#xff0c;且保證是一個整數。 輸入描述&#xff1a;輸入…

JavaScript-自定義屬性

自定義屬性 語法&#xff1a; 定義&#xff1a; <div class"box" data-id"666"></div> //獲取&#xff1a; <script>const div document.querySelector(.box);console.log(div.dateset.id);//輸出666 </script>

Node CLI 之 Commander.js (1)

官網地址&#xff1a; https://github.com/tj/commander.js/blob/f1ae2db8e2da01d6efcbfd59cbf82202f864b0c1/Readme_zh-CN.md Commander.js是node.js命令行界面的完整解決方案 開始 新建一個node工程執行 npm install commanderpackage.json中新增代碼添加 #! /usr/bin/env…

Linux 詳細介紹strace命令

system call(系統調用)是程序向內核請求服務的一種編程方式&#xff0c;strace是一個功能強大的工具&#xff0c;可以跟蹤用戶進程和 Linux 內核之間的交互。 要了解操作系統如何工作&#xff0c;首先需要了解系統調用如何工作。操作系統的主要功能之一是為用戶程序提供了一個…

HJ94 記票統計

題目&#xff1a; HJ94 記票統計 題解&#xff1a; 利用哈希表&#xff0c;投票是按姓名從哈希表中取出對應的票數&#xff0c;如果不在哈希表內證明為無效。 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int n Inte…

PyQt6 QTimeEdit時間控件

?鋒哥原創的PyQt6視頻教程&#xff1a; 2024版 PyQt6 Python桌面開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili2024版 PyQt6 Python桌面開發 視頻教程(無廢話版) 玩命更新中~共計39條視頻&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面開發 視頻教程(無廢話…

C++新經典模板與泛型編程:將trait類模板用作模板參數

將trait類模板用作模板參數 template<typename T> struct SumFixedTraits;template<> struct SumFixedTraits<char> {using sumT int;static sumT initValue() {return 0;} };template<> struct SumFixedTraits<int> {using sumT __int64;sta…

Proteus仿真--基于DAC0808設計的直流電機調速器

本文介紹基于DAC0808設計的直流電機調速器設計&#xff08;完整仿真源文件及代碼見文末鏈接&#xff09; 設置按鍵A-H按鍵&#xff0c;每個按鍵分別對應不同的速度&#xff0c;按下后電機按照設定速度轉動 仿真圖如下 仿真運行視頻 Proteus仿真--基于DAC0808設計的直流電機調…