206. Reverse Linked List
来源:互联网 发布:淘宝情趣记事by欲晓 编辑:程序博客网 时间:2024/05/29 18:24
题目大意:
反转一个链表,要求分别用迭代和递归实现
Python代码:
# Definition for singly-linked list.class ListNode(object): def __init__(self, x): self.val = x self.next = Noneclass Solution(object): def reverseList(self, head): """ :type head: ListNode :rtype: ListNode """ if head is None: return None# head, tail = self.reverseListRecursively(head) head = self.reverseListIteratively(head) return head # 递归 52ms def reverseListRecursively(self, head): if head.next is None: return head, head h, p = self.reverseListRecursively(head.next) p.next = head head.next = None return h, head # 迭代 95ms -> 69ms def reverseListIteratively(self, head): p = head q = p.next if q is None: return p r = q.next p.next = None # 第一次写的迭代 95ms# while q is not None:# q.next = p# p = q# q = r# if r is not None:# r = r.next # 69ms while r is not None: q.next = p p = q q = r r = r.next q.next = p return q
代码不难写,but AC后发现迭代的时间(95ms)要大于递归的时间(52ms)。按理说一般认为迭代的效率要优于递归,因为递归是自己调用自己,系统每次调用自己都需要分配空间,并把当前场景压栈,调用结束后还要释放空间,不仅浪费空间还浪费时间。可能是写得太渣了,so优化一下,优化后的时间为69ms,比优化前好些了。
0 0
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse Linked List
- 206. Reverse (Linked List)
- 算法导论 练习题 8.4-4
- Pandas入门:DataFrame的简单应用
- 在easyui中DataGrid 里的列数据进行格式化
- SSH搭建
- 开机出现“An operating system wasn't found.Try disconnecting any drives that don't ……pres
- 206. Reverse Linked List
- 【Java开发手册之安全规约】安全规约
- JESD79-4 第4章 SDRAM命令描述与操作(4.26-4.27)
- c++调用matlab生成的Dll动态连接库
- faster rcnn 源码解读1
- K近邻算法-KNN
- ArcGIS Engine中如何调用GP工具(二)
- iOS开发:在界面之间跳转的时候,返回到指定界面的方法(界面跳转到到新界面之后,返回到指定界面)
- 3.搭建仿真环境