LeetCode Note Java 00206:Reverse Linked List

倒裝輸入的 Linked List。

題目

Reverse Linked List Easy

Given the head of a singly linked list, reverse the list, and return the reversed list.

我的解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode output = null, tmp = null;
while (head != null) {
tmp = output;
output = new ListNode(head.val);
output.next = tmp;
head = head.next;
}
return output;
}
}

直接把 head 倒裝:

  1. 遍歷 head。

  2. 用 tmp 記住前一輪的 output,不然連結會斷。

  3. output 設成一個新 ListNode,並將 val 值 設成 head.val。

  4. output.next 設成 output,把先前串的接起來。

  5. head 設成 head.next,進入下一輪,直到 next 為空。

檢討

這種類型的解法滿主流的,不過還是很多遞迴方式的解法,遞迴真的是我的罩門 QQ。