数据结构与算法每日一题——链表(206. 反转链表) 解构赋值看过吗!

45 阅读1分钟

[206. 反转链表]

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
//  双指针
// var reverseList = function(head) {
//     let pre = null
//     let cur = head
//     if(!head || !head.next){return head}
//     while(cur){
//       let temp = cur.next
//       cur.next = pre
//       pre = cur
//       cur = temp
//     }
//     return pre
// };

// 递归
// let reverse = function(pre,head){
//     if(!head){
//         return pre
//     }
//     let temp = head.next
//     head.next = pre
//     pre = head
//     return reverse(pre,temp)
// }
// var reverseList = function(head) {
//     return reverse(null,head)
// };

//ES6解构赋值
var reverseList = function(head) {
    let pre = null
    let cur = head
    while(cur){
      [cur.next,pre,cur] = [pre,cur,cur.next]
    }
    return pre
};