Java有序鏈表的合并實現(xiàn)方法
問題
將兩個升序鏈表合并為一個新的升序鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節(jié)點組成的。
示例 1:

輸入:l1 = [1,2,4], l2 = [1,3,4]
輸出:[1,1,2,3,4,4]
示例二:
<strong>輸入:</strong>l1 = [], l2 = []
<strong>輸出:</strong>[]
示例 3:
輸入:l1 = [], l2 = [0]
輸出:[0]
思路
版本一
- 新建一個空的鏈表 nList
- 在兩個鏈表(l1,l2)都不為空的情況下,比較兩個鏈表的第一個元素的值的大小,取出最小的加入到新鏈表當中,然后小鏈表的頭指針指向下一位,并且nList的指針也指向下一位
- 如果兩個鏈表還都不為空,繼續(xù)循環(huán)
- 如果兩個鏈表有一個為空,那么將不為空的鏈表拼接到nList后邊
- 最后返回 nList 的next 作為新鏈表的頭結點
版本二
- 首先判斷兩個鏈表是否為空,為空直接返回空鏈表。不為空的繼續(xù)向下走
- 判斷 l1 和 l2的頭結點誰更小,則將這個節(jié)點保存為頭結點,后邊的節(jié)點一次拼接在該節(jié)點上邊。
- 后邊思路同版本一
答案
版本一
新建一個節(jié)點,將原來的鏈表都傳到新的鏈表當中
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode head = new ListNode(-1);
ListNode = head;
while (list1 != null && list2 != null) {
boolean b = list1.val <= list2.val;
all.next = b ? list1 : list2;
if (b) list1 = list1.next;
else list2 = list2.next;
all = all.next;
}
all.next = list1 != null ? list1 : list2;
return head.next;
}版本二
從原來的鏈表中選擇出來一個進行整合,不適用任何新的內(nèi)存
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
if (list1 == null || list2 == null) {
return list1 == null ? list2 : list1;
}
ListNode head = list1.val <= list2.val ? list1 : list2;
if (list1.val <= list2.val)
list1 = list1.next;
else
list2 = list2.next;
ListNode tmp = head;
while (list1 != null && list2 != null) {
boolean b = list1.val <= list2.val;
tmp.next = b ? list1 : list2;
if (b) list1 = list1.next;
else list2 = list2.next;
tmp = tmp.next;
}
tmp.next = list1 != null ? list1 : list2;
return head;
}到此這篇關于Java有序鏈表的合并實現(xiàn)方法的文章就介紹到這了,更多相關Java有序鏈表合并內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot實現(xiàn)優(yōu)雅停機的流程步驟
優(yōu)雅停機(Graceful Shutdown) 是指在服務器需要關閉或重啟時,能夠先處理完當前正在進行的請求,然后再停止服務的操作,本文給大家介紹了SpringBoot實現(xiàn)優(yōu)雅停機的流程步驟,需要的朋友可以參考下2024-03-03
Java實現(xiàn)多線程斷點下載實例代碼(下載過程中可以暫停)
線程可以理解為下載的通道,一個線程就是一個文件的下載通道,多線程也就是同時開啟好幾個下載通道,Java實現(xiàn)多線程斷點下載實例代碼(下載過程中可以暫停),有興趣的可以了解一下。2016-12-12
SpringBoot實現(xiàn)Read Through模式的操作過程
Read Through模式通常是指一種緩存策略,其中當應用程序嘗試讀取數(shù)據(jù)時,緩存系統(tǒng)首先被檢查以查看數(shù)據(jù)是否已經(jīng)存在于緩存中,這篇文章主要介紹了SpringBoot實現(xiàn)Read Through模式,需要的朋友可以參考下2024-07-07
Java Fluent Mybatis 分頁查詢與sql日志輸出詳解流程篇
Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國內(nèi)又以Mybatis用的多,基于mybatis上的增強框架,又有mybatis plus和TK mybatis等。今天我們介紹一個新的mybatis增強框架 fluent mybatis關于分頁查詢、sql日志輸出流程2021-10-10

