題目描述:
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。
示例:輸入: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指標指向下乙個的這條語句寫到了後面,導致節點自己指向自己,造成了超時錯誤 執...