Ahri-珊
day16将分享LeetCode算法题206。
206. Reverse Linked List
逆转链表。
心路历程
方法1:
1.将链表的值放入数组
2.对数组求逆
3.建立新的链表
方法2:
1.遍历链表
2.将链表头结点与下一个结点断开
3.头指针指向剩下的结点
4.断开的结点的下一个结点等于之前断开的结点组成的链表的头节点
代码:
var reverseList = function(head) {
if(!head)
return null;
var arr = [];
while(head)
{
arr.push(head.val);
head = head.next;
}
arr = arr.reverse();
var l = new ListNode(arr[0]);
var p = l;
for(let i=1;i<arr.length;i++)
{
p.next = new ListNode(arr[i]);
p = p.next;
}
return l;
};
var reverseList = function(head) {
let prev = null, next = null;
while(head){
next = head.next;
head.next = prev;
prev = head;
head = next;
}
return prev;
};
Comments