链表反转leetcode206
生活随笔
收集整理的這篇文章主要介紹了
链表反转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,是個不錯的嘗試。這是目前我所能想到的比較簡單的方法。
轉載于:https://www.cnblogs.com/qiangge666/p/6143320.html
總結
以上是生活随笔為你收集整理的链表反转leetcode206的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Struts2零配置介绍(约定访问)
- 下一篇: 【转】gdb 调试段错误