我正在做一个leetcode问题反向单链表。
我尝试了下面的代码,看看我是否错过了第1位的代码,结果会出错。我理解这是因为它失去了对它的引用current.next
。(感谢这个stackoverflow帖子。)
function ListNode(val) { this.val = val; this.next = null;}/** * @param {ListNode} head * @return {ListNode} */var reverseList = function(head) { let current = head; let prev = null; while (current) { current.next = prev; prev = current; current = current.next; //The right one // let save = current.next; //1 // current.next = prev; // prev = current; // current = save; } return prev};
问题是,我发现下面显示的另一个代码也可以通过使用数组解构赋值(名称可能正确吗?),但我无法理解为什么这个工作没有使用另一个变量来保存引用current.next
。
var reverseList = function(head) { let current = head; let prev = null; while (current) { [current.next, prev, current] = [prev, current, current.next];//2 } return prev};
那么第2位的代码如何实际工作而不使用另一个变量来保存对current.next
?的引用?
翻阅古今
jeck猫
相关分类