我正在做一个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?的引用?
大话西游666
翻阅古今
jeck猫
随时随地看视频慕课网APP
相关分类