Lintcode 合并两个排序的链表
2016-03-27 18:56
253 查看
将两个排序链表合并为一个新的排序链表
样例
给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。
递归实现:
非递归实现:
样例
给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。
递归实现:
""" Definition of ListNode class ListNode(object): def __init__(self, val, next=None): self.val = val self.next = next """ class Solution: """ @param two ListNodes @return a ListNode """ def mergeTwoLists(self, l1, l2): # write your code here if l1 == None: return l2 if l2 == None: return l1 mergeHead = None if l1.val <= l2.val: mergeHead = l1 mergeHead.next = self.mergeTwoLists(l1.next,l2) elif l2.val < l1.val: mergeHead = l2 mergeHead.next = self.mergeTwoLists(l1,l2.next) return mergeHead
非递归实现:
""" Definition of ListNode class ListNode(object): def __init__(self, val, next=None): self.val = val self.next = next """ class Solution: """ @param two ListNodes @return a ListNode """ def mergeTwoLists(self, l1, l2): # write your code here if l1 == None: return l2 if l2 == None: return l1 ptr1 = l1 ptr2 = l2 l = ListNode(0) current = l while(ptr1!= None and ptr2 != None): if ptr1.val < ptr2.val: current.next = ptr1 ptr1 = ptr1.next elif ptr1.val > ptr2.val: current.next = ptr2 ptr2 = ptr2.next else: current.next = ptr1 ptr1 = ptr1.next current = current.next current.next = ptr2 ptr2 = ptr2.next current = current.next if ptr1 == None: current.next = ptr2 else: current.next = ptr1 l = l.next return l
相关文章推荐
- CentOS7下JDK 安装错误 could not find libjava.so
- JVMGC——垃圾收集器的分类
- onWindowFoucusedChanged
- Android studio遇到在真机运行时出现adb not respond if you would like to retry问题解决方法
- Uva299——Train Swapping
- resin 4.0数据源的配置
- 环形数组最大子数组之和
- hdu5652
- cornerStone查看日志出错:Could not contact repository to read the latest log entries
- 数据库的基本操作
- JAVA基础总结(1)
- Swift2中的标准函数
- Android Xfermode 学习笔记
- BZOJ_P1176 [Balkan2007]Mokia(CDQ分治+树状数组)
- 你真的会写单例模式吗——Java实现
- PAT1051. Pop Sequence (25)
- 最大子数组和(结对开发)
- Glusterfs[转]
- 第四周学习总结
- iOS开发中的小技巧