zoukankan      html  css  js  c++  java
  • leetcode 206.反转链表

    反转一个单链表。

    示例:

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

    这道题要求我们将一个链表反转,刚一看这道题目反转好像很难,但仔细分析后发现这道题的关键就是next指向问题

    平时我们做的链表题目都是让它的当前节点指向它的后一个节点,这样一步一步循环,那么这道题就跟之前的正好相反,每次遍历都是让它的当前节点指向它的前一个节点,知道了这点这个题目就好做了。画个草图理解一下

     每次循环都让当前指针指向前一个节点

    var reverseList = function(head) {
            //先判断为null的情况
            if (head == null || head.next == null) {
                return head;
            }
    
            var current  = head //当前节点
            var pre = null      //前一个节点
            while(current != null){
                var next = current.next //先保存一下当前节点的下一个节点
                current.next = pre //让当前节点指向它的前一个一个节点
                pre = current  // 前一个指针后移
                current = next //当前指针后移
                //current = current.next 错误的写法,因为这个时候current.next = pre,current = pre = null,跳出了循环
            }
            return pre
        };

    这道题的关键在于当前指针指向前一个节点,还有就是每次保存当前的节点的下一个节点.

    递归解法

    var reverseList = (head, q = null) => {
        console.log(q);
        if (head) {
          return reverseList(head.next, {
            val: head.val,
            next: q,
          });
        }
        return q;
      }

    虽然看不懂,但还是要记录一下,万一以后水平提升了说不定就能看懂了

    不积跬步无以至千里
  • 相关阅读:
    C++ 纸牌 今日头条面试题
    c++ 病句 今日头条面试题
    C++ 球迷 今日头条面试题
    C++ 活动安排
    C++ 弗洛伊德算法
    填坑 bzoj3337
    bzoj3884 上帝与集合的正确用法
    人参中第一次膜你退货
    洛谷P2216 [HAOI2007]理想的正方形
    洛谷 P1099 树网的核+P2491 [SDOI2011]消防
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12369366.html
Copyright © 2011-2022 走看看