日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

链表反转的两种实现方法,后一种击败了100%的用户!

發布時間:2025/3/11 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 链表反转的两种实现方法,后一种击败了100%的用户! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | 王磊

來源 | Java中文社群(ID:javacn666)

轉載請聯系授權(微信ID:GG_Stone)

鏈表反轉是一道很基礎但又非常熱門的算法面試題,它也在《劍指Offer》的第 24 道題出現過,至于它有多熱(門)看下面的榜單就知道了。

從牛客網的數據來看,鏈表反轉的面試題分別霸占了【上周考過】和【研發最愛考】的雙重榜單,像網易、字節等知名互聯網公司都考過,但通過率卻低的只有 30%,所以本文我們就來學習一下反轉鏈表的兩種實現方法。

排行榜數據:https://www.nowcoder.com/activity/oj

題目

標題:劍指 Offer 24. 反轉鏈表

描述:定義一個函數,輸入一個鏈表的頭節點,反轉該鏈表并輸出反轉后鏈表的頭節點。

示例:

輸入: 1->2->3->4->5->NULL

輸出: 5->4->3->2->1->NULL

LeetCode 鏈接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/

實現方式一:Stack


全部入棧:

因為棧是先進后出的數據結構,因此它的執行過程如下圖所示:

最終的執行結果如下圖所示:

實現代碼如下所示:

public?ListNode?reverseList(ListNode?head)?{if?(head?==?null)?return?null;Stack<ListNode>?stack?=?new?Stack<>();stack.push(head);?//?存入第一個節點while?(head.next?!=?null)?{stack.push(head.next);?//?存入其他節點head?=?head.next;?//?指針移動的下一位}//?反轉鏈表ListNode?listNode?=?stack.pop();?//?反轉第一個元素ListNode?lastNode?=?listNode;?//?臨時節點,在下面的?while?中記錄上一個節點while?(!stack.isEmpty())?{ListNode?item?=?stack.pop();?//?當前節點lastNode.next?=?item;lastNode?=?item;}lastNode.next?=?null;?//?最后一個節點賦為null(不然會造成死循環)return?listNode; }

LeetCode 驗證結果如下圖所示:

實現方式二:遞歸

實現代碼如下所示:

public?static?ListNode?reverseList(ListNode?head)?{if?(head?==?null?||?head.next?==?null)?return?head;//?從下一個節點開始遞歸ListNode?reverse?=?reverseList(head.next);head.next.next?=?head;?//?設置下一個節點的?next?為當前節點head.next?=?null;?//?把當前節點的?next?賦值為?null,避免循環引用return?reverse; }

LeetCode 驗證結果如下圖所示:

總結

本文我們分別使用了 Stack?和遞歸的方法實現了鏈表反轉的功能,其中 Stack?的實現方式是利用了棧后進先出的特性可以直接對鏈表進行反轉,實現思路和實現代碼都比較簡單,但在性能和內存消耗方面都不是很理想,可以作為筆試的保底實現方案;而遞歸的方式在性能和內存消耗方面都有良好的表現,同時它的實現代碼也很簡潔,讀者只需理解代碼實現的思路即可。

往期推薦

JDK 竟然是這樣實現棧的?


動圖演示:手擼堆棧的兩種實現方法!


漫畫:什么是紅黑樹?(整合版)

關注下方二維碼,收獲更多干貨!

總結

以上是生活随笔為你收集整理的链表反转的两种实现方法,后一种击败了100%的用户!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。