探索字节跳动-反转链表|刷题打卡

222 阅读1分钟

本文正在参与掘金团队号上线活动,点击 查看大厂春招职位

一、题目描述:

反转一个单链表。

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

二、思路分析:

采用递归的方法,没有什么复杂的地方,注意递归每层都要new一个ListNode,然后把他传进下一层

三、AC代码:

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */

const recursion = function(node,previous){
    current = new ListNode(node.val,previous)
    if(node.next===null){
        return current
    }else{
        return recursion(node.next,current)
    }
}
var reverseList = function(head) {
    if (!head) return head
    return recursion(head,undefined)
};

四、总结:

迭代的方法待补