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;
      }

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

    不积跬步无以至千里
  • 相关阅读:
    WebClient.UploadData 方法 上载文件数据
    webclient提交并接受返回
    webClient上载下载
    斯特林反演与伯恩赛德引理
    Re0: 从 1 开始的省选前生活
    Windows 8将可能带动触摸屏的发展
    后PC时代的那些事
    关于ASP网页在IIS7.5下访问数失效
    Windows 要终结了?微软要推超级系统?
    未来10年的开放式互联网
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12369366.html
Copyright © 2011-2022 走看看