1
+ <!DOCTYPE html> < html lang ="en "> < head > < meta charset ="UTF-8 "/> < meta name ="viewport " content ="width=device-width, initial-scale=1.0 "/> < meta http-equiv ="X-UA-Compatible " content ="ie=edge "/> < title > Reverse Linked List - LeetCode javascript solutions</ title > < link rel ="shortcut icon " href ="https://baffinlee.github.io/leetcode-javascript/static/img/favicon.png " type ="image/png "/> < link rel ="stylesheet " href ="https://baffinlee.github.io/leetcode-javascript/static/css/app.css "/> </ head > < body > < header > < h1 > 206. Reverse Linked List</ h1 > < div class ="row "> < div class ="name "> Difficulty:</ div > < div class ="value "> < a href ="https://baffinlee.github.io/leetcode-javascript/difficulty/easy " class ="tag "> Easy</ a > </ div > </ div > < div class ="row "> < div class ="name "> Related Topics:</ div > < div class ="value "> < ul class ="clearfix "> < li > < a href ="https://baffinlee.github.io/leetcode-javascript/tag/linked-list "> Linked List</ a > </ li > </ ul > </ div > </ div > < div class ="row "> < div class ="name "> Similar Questions:</ div > < div class ="value "> < ul class ="clearfix "> < li > < a href ="https://baffinlee.github.io/leetcode-javascript/problem/reverse-linked-list-ii.html "> Reverse Linked List II</ a > </ li > < li > < a href ="https://baffinlee.github.io/leetcode-javascript/problem/binary-tree-upside-down.html "> Binary Tree Upside Down</ a > </ li > < li > < a href ="https://baffinlee.github.io/leetcode-javascript/problem/palindrome-linked-list.html "> Palindrome Linked List</ a > </ li > </ ul > </ div > </ div > </ header > < main > < article class ="markdown-body "> < h2 id ="problem "> Problem</ h2 >
2
+ < p > Reverse a singly linked list.</ p >
3
+ < p > < strong > Example:</ strong > </ p >
4
+ < pre > < code class ="hljs "> Input: < span class ="hljs-number "> 1</ span > ->< span class ="hljs-number "> 2</ span > ->< span class ="hljs-number "> 3</ span > ->< span class ="hljs-number "> 4</ span > ->< span class ="hljs-number "> 5</ span > ->NULL
5
+ Output: < span class ="hljs-number "> 5</ span > ->< span class ="hljs-number "> 4</ span > ->< span class ="hljs-number "> 3</ span > ->< span class ="hljs-number "> 2</ span > ->< span class ="hljs-number "> 1</ span > ->NULL
6
+ </ code > </ pre >
7
+ < p > < strong > Follow up:</ strong > </ p >
8
+ < p > A linked list can be reversed either iteratively or recursively. Could you implement both?</ p >
9
+ < h2 id ="solution-1 "> Solution 1</ h2 >
10
+ < pre > < code class ="hljs lang-javascript "> < span class ="hljs-comment "> /**
11
+ * Definition for singly-linked list.
12
+ * function ListNode(val) {
13
+ * this.val = val;
14
+ * this.next = null;
15
+ * }
16
+ */</ span >
17
+ < span class ="hljs-comment "> /**
18
+ * @param {ListNode} head
19
+ * @return {ListNode}
20
+ */</ span >
21
+ < span class ="hljs-keyword "> var</ span > reverseList = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> head</ span > ) </ span > {
22
+ < span class ="hljs-keyword "> var</ span > newHead = < span class ="hljs-literal "> null</ span > ;
23
+ < span class ="hljs-keyword "> var</ span > tmp = < span class ="hljs-literal "> null</ span > ;
24
+ < span class ="hljs-keyword "> while</ span > (head) {
25
+ tmp = head.next;
26
+ head.next = newHead;
27
+ newHead = head;
28
+ head = tmp;
29
+ }
30
+ < span class ="hljs-keyword "> return</ span > newHead;
31
+ };
32
+ </ code > </ pre >
33
+ < p > < strong > Explain:</ strong > </ p >
34
+ < p > nope.</ p >
35
+ < p > < strong > Complexity:</ strong > </ p >
36
+ < ul >
37
+ < li > Time complexity : O(n).</ li >
38
+ < li > Space complexity : O(1).</ li >
39
+ </ ul >
40
+ < h2 id ="solution-2 "> Solution 2</ h2 >
41
+ < pre > < code class ="hljs lang-javascript "> < span class ="hljs-comment "> /**
42
+ * Definition for singly-linked list.
43
+ * function ListNode(val) {
44
+ * this.val = val;
45
+ * this.next = null;
46
+ * }
47
+ */</ span >
48
+ < span class ="hljs-comment "> /**
49
+ * @param {ListNode} head
50
+ * @return {ListNode}
51
+ */</ span >
52
+ < span class ="hljs-keyword "> var</ span > reverseList = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> head</ span > ) </ span > {
53
+ < span class ="hljs-keyword "> return</ span > reverse(< span class ="hljs-literal "> null</ span > , head);
54
+ };
55
+
56
+ < span class ="hljs-keyword "> var</ span > reverse = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> newHead, head</ span > ) </ span > {
57
+ < span class ="hljs-keyword "> if</ span > (!head) < span class ="hljs-keyword "> return</ span > newHead;
58
+ < span class ="hljs-keyword "> var</ span > tmp = head.next;
59
+ head.next = newHead;
60
+ < span class ="hljs-keyword "> return</ span > reverse(head, tmp);
61
+ };
62
+ </ code > </ pre >
63
+ < p > < strong > Explain:</ strong > </ p >
64
+ < p > nope.</ p >
65
+ < p > < strong > Complexity:</ strong > </ p >
66
+ < ul >
67
+ < li > Time complexity : O(n).</ li >
68
+ < li > Space complexity : O(n).</ li >
69
+ </ ul > </ article > </ main > < footer > < a href ="https://github.com/BaffinLee/leetcode-javascript " target ="_blank "> < img src ="https://baffinlee.github.io/leetcode-javascript/static/img/github.png " alt ="github "/> </ a > </ footer > </ body > </ html >
0 commit comments