leetcode 算法题206 (简单053) 反转链表
- 题目介绍
反转一个单链表。
- 示例
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
- 进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
- 解法一
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
if(!head) {
return null;
}
let temp = [];
while(head) {
temp.push(head);
head = head.next;
}
head = temp[temp.length - 1];
let reverse = head, i = temp.length - 2;
while(i >= 0) {
reverse.next = temp[i--];
reverse = reverse.next;
}
reverse.next = null;
return head;
};
执行用时 : 76 ms, 在所有 JavaScript 提交中击败了93.63%的用户
内存消耗 : 35.5 MB, 在所有 JavaScript 提交中击败了13.68%的用户
- 解法二
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
if(!head) {
return null;
}
if(!head.next) {
return head;
}
let next = reverseList(head.next), temp = next;
while(temp.next) {
temp = temp.next;
}
temp.next = head;
head.next = null;
return next;
};
执行用时 : 120 ms, 在所有 JavaScript 提交中击败了9.4%的用户
内存消耗 : 35.7 MB, 在所有 JavaScript 提交中击败了9.59%的用户
- 解法三
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
let temp = null;
while(head) {
let next = head.next
head.next = temp;
temp = head;
head = next;
}
return temp;
};
执行用时 : 84 ms, 在所有 JavaScript 提交中击败了72.45%的用户
内存消耗 : 34.8 MB, 在所有 JavaScript 提交中击败了55.98%的用户
- 解法四
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
if(!head) {
return null;
}
if(!head.next) {
return head;
}
let next = reverseList(head.next);
head.next.next = head;
head.next = null;
return next;
};
执行用时 : 88 ms, 在所有 JavaScript 提交中击败了55.04%的用户
内存消耗 : 35.2 MB, 在所有 JavaScript 提交中击败了25.79%的用户