LeetCode21 合併兩個有序鍊錶

2021-10-04 04:39:13 字數 1104 閱讀 5669

題目描述:

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。 

示例:輸入:1

->

2->4,

1->

3->

4輸出:1

->

1->

2->

3->

4->

4

解題思路:

建立乙個新鍊錶,每次都從比較小的那個鍊錶中選乙個節點,直到乙個鍊錶選完,再把剩下的鍊錶都加上

ps:真是說來慚愧,剛學完資料結構,聽課的時候還覺得挺簡單的,但要自己實現的時候還是有點費事。剛開始報了乙個空引用異常,然後我就每次新生成乙個鍊錶來儲存資訊。看了官方題解後其實不用。

**如下:

public

class

solution

while

(l1 != null || l2 != null)

break;}

if(l2 == null)

break;}

if(l1.val <= l2.val)

else

}return result.next;

}public

static

void

main

(string[

] args)

}

優化**:

class

solution

else

prev = prev.next;

}// exactly one of l1 and l2 can be non-null at this point, so connect

// the non-null list to the end of the merged list.

prev.next = l1 == null ? l2 : l1;

return prehead.next;

}}

LeetCode 21合併兩個有序列表

將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4初始解法 這個問題轉換為經典的merge排序中的merge過程.merge排序中merge操作即是將兩個有序子陣列合併成乙個陣列,需要考慮比較過程...

leetcode21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 思路 每次判斷兩個鍊錶的頭部小的數值,訪問小的,並讓該鍊錶往後移動。注意 注意鍊錶走完,為空的情況即可。遇到的問題 一開始不太理解鍊錶,返回e...

LEETCODE 21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4c 第一遍將 相等 的這個else分支寫錯了,主要錯誤在於,next指標指向下乙個的這條語句寫到了後面,導致節點自己指向自己,造成了超時錯誤 執...