LeetCode初級(jí)算法--鏈表02:合并兩個(gè)有序鏈表
搜索微信公眾號(hào):'AI-ming3526'或者'計(jì)算機(jī)視覺(jué)這件小事' 獲取更多算法悄雅、機(jī)器學(xué)習(xí)干貨
csdn:https://blog.csdn.net/baidu_31657889/
csdn:https://blog.csdn.net/abcgkj/
github:https://github.com/aimi-cn/AILearners
一、引子
這是由LeetCode官方推出的的經(jīng)典面試題目清單~
這個(gè)模塊對(duì)應(yīng)的是探索的初級(jí)算法~旨在幫助入門(mén)算法雨涛。我們第一遍刷的是leetcode推薦的題目着绷。
查看完整的劍指Offer算法題解析請(qǐng)點(diǎn)擊github鏈接:
github地址
二抹蚀、題目
將兩個(gè)有序鏈表合并為一個(gè)新的有序鏈表并返回。新鏈表是通過(guò)拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的丰涉。
示例:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
1、思路
首先我們看到的數(shù)一個(gè)有序的鏈表斯碌,所以我們可以先比較兩個(gè)鏈表長(zhǎng)度相等的部分一死,按照順序進(jìn)行排列,對(duì)于剩下一個(gè)鏈表的部分傻唾,直接插入到最終的鏈表中投慈,詳細(xì)過(guò)程見(jiàn)代碼。
2冠骄、編程實(shí)現(xiàn)
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)
#返回的是合并后的列表 所以讓一個(gè)節(jié)點(diǎn)等于這個(gè)空的節(jié)點(diǎn)
pHead = new_head
#進(jìn)行排序
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
# 遍歷剩下沒(méi)遍歷的列表
if l1:
new_head.next = l1
elif l2:
new_head.next = l2
return pHead.next
AIMI-CN AI學(xué)習(xí)交流群【1015286623】 獲取更多AI資料
分享技術(shù)伪煤,樂(lè)享生活:我們的公眾號(hào)計(jì)算機(jī)視覺(jué)這件小事每周推送“AI”系列資訊類(lèi)文章,歡迎您的關(guān)注凛辣!
本文由博客一文多發(fā)平臺(tái) OpenWrite 發(fā)布带族!