[打卡3:leetcode206-反转链表] |刷题打卡

192 阅读1分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

前言

第一次参加掘金打卡活动,别的不说 主要是奔着奖励来的。4.12开始为了达到14题小目标 冲冲冲!!!

image.png

题目描述

题目链接:反转链表

题目描述我用截图leetcode的为主,所以题目如下图

image.png

思路分析

依照题目可以知道,这题考链表,并且要求用迭代(a()=>b()=>c()按顺序执行)和递归(a(a):a方法调用a方法)去实现; 解题思路:新建一个空链表 按顺序遍历的时候把新链表的指针指向值,需要在遍历的过程当中,先将下一个节点保存,然后再操作next指向,不然可能出现指针丢失。 注意点:需求考虑null的情况(采坑了)

AC 代码

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
 // 迭代
var reverseList = (first=>{
    if(!first){
      return null
    }
    let resultList = null, linkedList = first;
    while (linkedList) {
      let next = linkedList.next;
      linkedList.next = resultList; 
      resultList = linkedList;
      linkedList = next;
    }
    return resultList;
}) 
 
 
// 递归
var reverseList =  (head=>{
    if(!head){
      return null
    }
    var linkedList
    var gc = (back=>{
        if (!back.next) {
            linkedList = back
            return back
        } else {
            var node = gc(back.next)
            node.next = back
            if (head === back) {
                back.next = null
                return linkedList
            } else {
                return back
            }
        }
    }) 
    return gc(head)
}) 

总结

多动手,多思考。第三题算法完成,坚持就是胜利!!!

       ↓↓↓

算法系列链接

       ↑↑↑

这里可以点!这里可以点!这里可以点!