
解题:
/**
* @param {ListNode} head
* @return {ListNode}
* 反转链表,用一个变量存放下一个 node
* 所有的链表题考查的不是思维能力,思考都很简单,而是实现能力;
* 思路:
* 1. 每次对当前节点进行反转:
* - 从第一个prev节点null开始;
* - 开始反转第一个节点,用一个变量next存储下一个节点,然后反转 cur.next = prev, 把 prev 赋值为 cur,对于下一次他已经是 prev 了,然后把 cur 移动到下一个节点继续开始比较
* 总结核心:每次比较存储好一个节点后进行反转且向后进行推进
*/
var reverseList = function(head) {
// 增加边缘优化
if(!head || !head.next){
return head
}
let prev = null;
let cur = head;
while(cur) {
// 保存下一个节点
let next = cur.next;
// 替换当前节点的下一个节点
cur.next = prev;
// 赋值给 prev
prev = cur;
// cur 移动到下一个节点
cur = next;
}
return prev;
};
描述
解题: