自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

算法:合并兩個(gè)有序鏈表

開發(fā) 前端 算法
兩個(gè)升序鏈表合并為一個(gè)新的升序鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。

[[414979]]

本文轉(zhuǎn)載自微信公眾號(hào)「三分鐘學(xué)前端」,作者sisterAn。轉(zhuǎn)載本文請(qǐng)聯(lián)系三分鐘學(xué)前端公眾號(hào)。

將兩個(gè)升序鏈表合并為一個(gè)新的升序鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。

示例:

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

解答:

確定解題的數(shù)據(jù)結(jié)構(gòu): 單鏈表

確定解題思路: 從鏈表頭開始比較,l1 與 l2 是有序遞增的,所以比較 l1.val 與 l2.val 的較小值就是合并后鏈表的最小值,次小值就是小節(jié)點(diǎn)的 next.val 與大節(jié)點(diǎn)的 val 比較的較小值,依次遞歸,直到遞歸到 l1 l2 均為 null

畫圖實(shí)現(xiàn): 畫圖幫助理解一下

確定邊界條件: 當(dāng)遞歸到任意鏈表為 null ,直接將 next 指向另外的鏈表即可,不需要繼續(xù)遞歸了

代碼實(shí)現(xiàn):

  1. function mergeTwoLists(l1, l2) { 
  2.     if(l1 === null) { 
  3.         return l2 
  4.     } 
  5.     if(l2 === null) { 
  6.         return l1 
  7.     } 
  8.     if(l1.val <= l2.val) { 
  9.         l1.next = mergeTwoLists(l1.next, l2) 
  10.         return l1 
  11.     } else { 
  12.         l2.next = mergeTwoLists(l2.next, l1) 
  13.         return l2 
  14.     } 

 

來源:https://github.com/sisterAn/JavaScript-Algorithms

 

責(zé)任編輯:武曉燕 來源: 三分鐘學(xué)前端
相關(guān)推薦

2021-01-28 08:20:41

鏈表空間復(fù)雜度

2022-06-27 07:50:16

鏈表節(jié)點(diǎn)測(cè)試

2020-10-25 08:47:36

Python有序字典

2021-11-17 08:43:17

LeetCode有序數(shù)組算法

2021-05-07 08:03:05

JS動(dòng)態(tài)合并

2021-09-08 09:52:34

語言

2023-10-07 08:11:22

代碼模板合并排序

2020-10-26 08:19:53

算法隊(duì)列

2022-06-17 09:46:51

Chrome 102Chrome瀏覽器

2022-02-16 09:12:22

LeetCode升序鏈表鏈表數(shù)組

2020-11-13 07:16:09

線程互斥鎖死循環(huán)

2009-07-16 10:39:00

SwingUtilit

2010-09-10 15:26:05

SOAP封裝

2009-07-15 18:29:22

Jython應(yīng)用

2017-01-15 01:45:37

簡歷簡歷模板數(shù)據(jù)

2010-07-02 12:26:51

LEACH協(xié)議

2010-09-17 09:51:37

SIP路由

2019-06-25 10:46:04

Flutter開發(fā)APP

2022-10-17 16:17:24

機(jī)器學(xué)習(xí)算法標(biāo)簽傳播
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)