algorithm-camp
algorithm-camp copied to clipboard
206. 反转链表
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
https://leetcode-cn.com/problems/reverse-linked-list/
var reverseList = function(head) { let curr=head,pre=null; while(curr!=null){ let temp=curr.next; curr.next=pre; pre=curr; curr=temp; } return pre; };
var reverseList = function(head) {
let cur = head;
let pre =null;
while(cur){
let temp = cur.next;
cur.next=pre;
pre = cur;
cur=temp
}
return pre
};
执行用时 :60 ms, 在所有 JavaScript 提交中击败了96.80%的用户 内存消耗 :34.8 MB, 在所有 JavaScript 提交中击败了83.62%的用户
var reverseList = function(head) { var nextCur = head; var lastCur = null; var cur = null; while(nextCur){ cur = nextCur; nextCur = cur.next; cur.next = lastCur; lastCur = cur; } return lastCur; };
var reverseList = function(head) {
if(head === null || head.next === null){
return head
}
let s = []
let c = head
while(c) {
s.push(c)
c = c.next
}
let h = s.pop()
let next = h
while(s.length) {
const r = s.pop()
r.next = null
next.next = r
next = next.next
}
return h
};
执行用时 :72 ms, 在所有 JavaScript 提交中击败了51.96%的用户 内存消耗 :35.4 MB, 在所有 JavaScript 提交中击败了24.89%的用户
var reverseList = function (head) {
let current = head
let previous = null
while (current) {
let next = current.next;
current.next = previous
previous = current
current = next
}
return previous
};
var reverseList = function(head) {
// 用于保存当前节点
let curr = head
// 用于保存上一位节点
let prev = null
while(curr){
// 临时节点保存当前节点的下一位
let tmp = curr.next
// 交换节点
curr.next = prev
prev = curr
// 后移到下一位节点
curr = tmp
}
return prev
};
//将链表元素入栈,然后逐个出栈建立新链表
var reverseList = function (head) {
let cur = head;
let arr = [];
while (cur) {
arr.push(cur.val);
cur = cur.next;
}
let newHead = new ListNode(null);
let prev = newHead;
prev.next = null;
let cur1;
for (let i = arr.length; i > 0; i--) {
let newNode = new ListNode(arr.pop());
cur1 = newNode;
prev.next = cur1;
cur1.next = null;
prev = cur1;
}
return newHead.next;
};