• 链表反转leetcode206


    最近准备结束自己的科研生涯,准备要开始找工作了,准备在LEETCODE刷刷题...刷的前40题全部用python刷的,各种调包速度奇快,后被师哥告知这样没意义,于是准备开始回归C++,Python用的多了再用C++总是忘记敲分号和括号,甚至Compile Error了几次 = =。尴尬

    链表反转比较简单,首先用自己的“本科”方法做了一下,发现效率并不高:

     1 class Solution {
     2 public:
     3     ListNode* reverseList(ListNode* head) {
     4         ListNode *p = head;
     5         if(p == NULL||p->next == NULL){
     6             return p;
     7         }
     8         ListNode *q,*r;
     9         q = p->next;
    10         p->next = NULL;
    11         while(q != NULL){
    12             r = q->next;
    13             q->next = p;
    14             p = q;
    15             q = r;
    16         }
    17         return p;
    18     }
    19 };

    完全常规的方法,13ms。后来想了一下可以递归的求试试:

     1 class Solution {
     2 public:
     3     ListNode* reverseList(ListNode* head) {
     4         if(head == NULL||head->next == NULL){
     5             return head;
     6         }
     7         ListNode *ans = reverseList(head->next);
     8         head->next->next = head;
     9         head->next = NULL;
    10         return ans;
    11     }
    12 };

    这个方法求解加速到了6ms,是个不错的尝试。这是目前我所能想到的比较简单的方法。

  • 相关阅读:
    kafka其他记录
    kafka基础
    营销网络建设
    营销体制管理
    营销队伍建设
    营销组成
    Asp.net model 绑定原理
    Cannot change version of project facet Dynamic Web Module to 3.0.
    maven 编译插件
    mysql 配置文件 value
  • 原文地址:https://www.cnblogs.com/qiangge666/p/6143320.html
Copyright © 2020-2023  润新知