python剑指offer 合并两个排序的链表

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回合并后列表
    def Merge(self, pHead1, pHead2):
        # write code here
        if pHead1 == None:
            return pHead2
        elif pHead2 == None:
            return pHead1
        pMergedHead = None
        if pHead1.val < pHead2.val:
            pMergedHead = pHead1
            pMergedHead.next = self.Merge(pHead1.next,pHead2)
        else:
            pMergedHead = pHead2
            pMergedHead.next = self.Merge(pHead1, pHead2.next)
        return pMergedHead

原文地址:https://www.cnblogs.com/tianqizhi/p/9674180.html

时间: 2024-11-01 06:36:02

python剑指offer 合并两个排序的链表的相关文章

剑指offer——合并两个排序的链表

题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 代码实现(Java) 方案一:递归方法 1 /* 2 public class ListNode { 3 int val; 4 ListNode next = null; 5 6 ListNode(int val) { 7 this.val = val; 8 } 9 }*/ 10 public class Solution { 11 public ListNode Merge(ListNode

[剑指offer] 合并两个排序链表

题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 输入描述 两个单调递增的链表 输出描述 一个单调不减的链表 题目分析 节点申明: public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } 解法一 (递归) 运行时间:31ms 占用内存:629k public class Solution { public Li

剑指OFFER——合并两个有序的链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 再做这道题就是想不起来书上怎么做的了,但是最近看STL里面全是这种基础的合并啊,比较啊.就算不会也看会了. 循环我用了4个指针.p和q分别指向两个链表当前需要比较的元素,l和k分别代表“新”的链表的旧节点和新节点,防止断了. 每次新比较的结果给k,l代表之前的节点. 循环: /* struct ListNode { int val; struct ListNode *next; ListNode(int

剑指Offer-16.合并两个排序的链表(C++/Java)

题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 分析: 可以用一个新的节点,来去比较两个单调递增的链表当前节点的值,如果p1当前的值小于p2,则新的节点的next=p1,p1移到下一个节点,新的节点p也要移动到下一个节点. 当然也可以用递归来做.C++常规做法,Java递归实现. 程序: C++ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead

剑指offer17合并两个排序的链表

Tv运远厦7V籽4姓62http://shequ.docin.com/vkih86746 201m蚜疽6qg壤笛http://tushu.docin.com/fhqrw5685 8lUo孜拇迸si瓮怀2u4http://tushu.docin.com/sina_6367438287 N6DXQ7烟肝牧币5http://www.docin.com/app/user/userinfo?userid=179007252 4o料75HXN市范1Zhttp://weibo.com/p/1005056373

剑指offer-合并两个排序的链表

题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. public class Test { class ListNode { int value; ListNode next; public ListNode(int value) { this.value = value; } } /** * node1: 1->3->5->7; * node2: 2->4->6->8->9->10->11; * @

【剑指offer】Q17:合并两个排序的链表

def Merge(head1, head2): if head1 == None: return head2 if head2 == None: return head1 psuhead = ListNode(-1) tail = psuhead while head1 and head2: if head1.val < head2.val: cur = head1 head1 = head1.next else: cur = head2 head2 = head2.next cur.next

剑指Offer:合并两个排序的链表【25】

剑指Offer:合并两个排序的链表[25] 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题目分析 每次都是比较箭头节点,把小节点连接到已经合并的链表之后,重复的执行此过程,最后如果那个链表已经走完,那就将另一个链表直接连接到合并的链表之后. Java题解 public static ListNode Merge(ListNode list1,ListNode list2) { if(list1==null) return list2;

剑指offer(十六) 合并两个排序的链表

合并两个排序的链表 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 用JavaScript非递归和递归方式都AC了. 非递归: function ListNode(x){ this.val = x; this.next = null; } function Merge(pHead1, pHead2) { if(!pHead1) { return !pHead2 ? null:pHead2; }else if(!pHead2) { retur