【双100%解法】剑指 Offer 24. 反转链表
生活随笔
收集整理的這篇文章主要介紹了
【双100%解法】剑指 Offer 24. 反转链表
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
立志用最少的代碼做最高效的表達(dá)
定義一個(gè)函數(shù),輸入一個(gè)鏈表的頭節(jié)點(diǎn),反轉(zhuǎn)該鏈表并輸出反轉(zhuǎn)后鏈表的頭節(jié)點(diǎn)。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
限制:
0 <= 節(jié)點(diǎn)個(gè)數(shù) <= 5000
理解鏈表最好的方法,就是在草稿紙上畫下來手推!
***代碼展示
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/ class Solution {public ListNode reverseList(ListNode head) {if(head == null) return head; // 空鏈表if(head.next == null) return head; // 鏈表長度為1ListNode pre = null, cur = head, nex; // 注意魯棒性boolean flag = true;while(cur != null) { // 當(dāng)cur為null時(shí),pre正好處于尾結(jié)點(diǎn), 且當(dāng)cur為null時(shí),所有節(jié)點(diǎn)正好全部倒置nex = cur.next;cur.next = pre;pre = cur;cur = nex;}return pre;} }完整可運(yùn)行代碼
public class 劍指Offer24_反轉(zhuǎn)鏈表 {static class ListNode{int val;ListNode next;ListNode(int v) { val = v; }}static class Solution{public ListNode reverseList(ListNode head) {if(head == null) return head; // 空鏈表if(head.next == null) return head; // 鏈表長度為1ListNode pre = null, cur = head, nex; // 注意魯棒性boolean flag = true;while(cur != null) { // 當(dāng)cur為null時(shí),pre正好處于尾結(jié)點(diǎn), 且當(dāng)cur為null時(shí),所有節(jié)點(diǎn)正好全部倒置nex = cur.next;cur.next = pre;pre = cur;cur = nex;}return pre;}}public static void main(String[] args) {ListNode l1 = new ListNode(1);ListNode l2 = new ListNode(2);ListNode l3 = new ListNode(3);ListNode l4 = new ListNode(4);l1.next = l2;l2.next = l3;l3.next = l4;Solution solution = new Solution();ListNode l = solution.reverseList(l1);System.out.println(l.val + " " + l.next.val + " " + l.next.next.val);} }木秀于林,風(fēng)必摧之;堆出于岸,流必湍之;行高于人,眾必非之。
總結(jié)
以上是生活随笔為你收集整理的【双100%解法】剑指 Offer 24. 反转链表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【双100%解法】LeetCode 14
- 下一篇: 【传智播客】JavaWeb程序设计任务教