首页 > 解决方案 > Leetcode javascript reverse-linked-list,一个关于javascipt中new的问题

问题描述

我在leetcode中学习javascript,在leetcode中做reverse-linked-list这个问题。 https://leetcode.com/problems/reverse-linked-list/

我不知道我的答案有什么区别:

var h = new ListNode(head.val);
newReverseListTail.next = h;

和正确答案。

head.next = null;
newReverseListTail.next = head;

当我使用我的答案时,运行程序的结果将只显示列表的最后两个列表节点的保留,例如:

输入:[1,2,3,4,5,6]

我的输出:[6.5]

正确输出:[6,5,4,3,2,1]

这是有关该问题的所有代码。

var reverseList = function(head) {
    if(head == null || head.next == null)  return head;
    let newReverseList = reverseList(head.next);
    let newReverseListTail = head.next;
    var h = new ListNode(head.val);
    head.next = null
    //newReverseListTail.next = h;
    newReverseListTail.next = head;
    head.next = null
    return newReverseList;
};

标签: javascript

解决方案


你可以试试这个解决方案。

    function reverse(A){
     let currentNode = A;
     let next, prev = null;
      while(currentNode){
       next = currentNode.next;
       currentNode.next = prev;
       prev = currentNode;
       currentNode = next;
    }
    console.log(prev);
    return prev;
  }

let data = {
  'data':1,
  'next':{
    'data':2,
    'next':{
      'data':3,
      'next':{
        'data':4,
        'next':null
      }
    }
  }
};

reverse(data); // 4 -> 3 -> 2 -> 1


推荐阅读