1、题目
2、解题代码(javascript)
/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
function ReverseList( phead ) {
let prev=null
let curr=phead
while(curr){
[curr.next,prev,curr]=[prev,curr,curr.next]
}
return prev
}
module.exports = {
ReverseList : ReverseList
};
3、题解
3.1 ES6中的解构是指按照一定的模式从数组和对象中提取值,对变量进行赋值的行为。这是一种将数据结构分解成更小的部分的过程,从而达到简化提取信息的目的。其中包括对象解构、数组解构、混合解构。
//对象解构
let { x, y } = { x: 10, y: 20 };
//通过解构从对象中提取了x和y的值,并将它们分别赋给了新的变量x和y
//数组解构
let [first, second] = [10, 20];
//通过解构从数组中提取了第一和第二个元素,并将它们分别赋给了新的变量first和second
//混合解构
let { x, y } = [10, 20]; // x=10, y=undefined
let [first, second] = { x: 10, y: 20 }; // first=undefined, second=20
//同时对对象和数组进行了解构,从数组中提取了第一和第二个元素,并将它们分别赋给了新的变量first和second。同时,我们还从对象中提取了x和y的值,并将它们分别赋给了新的变量x和y。注意,由于数组的第一个元素是数字,所以first被赋值为undefined
3.2 运用es6解构赋值,一一对应,不需要考虑赋值顺序,同时也不需要定义额外的next,即可求解该题。