LeetCode初級算法--鏈表02:合併兩個有序鏈表

LeetCode初級算法--鏈表02:合併兩個有序鏈表

搜索微信公衆號:'AI-ming3526'或者'計算機視覺這件小事' 獲取更多算法、機器學習乾貨
csdn:https://blog.csdn.net/baidu_31657889/
csdn:https://blog.csdn.net/abcgkj/
github:https://github.com/aimi-cn/AILearnerspython

1、引子

這是由LeetCode官方推出的的經典面試題目清單~
這個模塊對應的是探索的初級算法~旨在幫助入門算法。咱們第一遍刷的是leetcode推薦的題目。
查看完整的劍指Offer算法題解析請點擊github連接:
github地址git

2、題目

將兩個有序鏈表合併爲一個新的有序鏈表並返回。新鏈表是經過拼接給定的兩個鏈表的全部節點組成的。github

示例:面試

輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4

一、思路

首先咱們看到的數一個有序的鏈表,因此咱們能夠先比較兩個鏈表長度相等的部分,按照順序進行排列,對於剩下一個鏈表的部分,直接插入到最終的鏈表中,詳細過程見代碼。算法

二、編程實現

python編程

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def mergeTwoLists(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        new_head = ListNode(0)
        #返回的是合併後的列表 因此讓一個節點等於這個空的節點
        pHead = new_head
        #進行排序
        while l1 and l2:
            if l1.val > l2.val:
                new_head.next = l2
                l2 = l2.next
            else:
                new_head.next = l1
                l1 = l1.next
            new_head = new_head.next
        # 遍歷剩下沒遍歷的列表
        if l1:
            new_head.next = l1
        elif l2:
            new_head.next = l2
        return pHead.next

AIMI-CN AI學習交流羣【1015286623】 獲取更多AI資料微信

分享技術,樂享生活:咱們的公衆號計算機視覺這件小事每週推送「AI」系列資訊類文章,歡迎您的關注!機器學習

本文由博客一文多發平臺 OpenWrite 發佈!學習

相關文章
相關標籤/搜索