LeetCodeノート:21.Merge Two Sorted Lists
2023 ワード
質問:
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
注意:
2つの順序付きチェーンテーブルを結合し、新しいチェーンテーブルを返します.新しいチェーンテーブルには、元の2つのチェーンテーブルのすべてのノードが含まれている必要があります.
考え方:
2つの秩序あるチェーンテーブルを統合するのは実は構想が直接的で、2つのチェーンテーブルの最初のノードから大きさを比較して、小さいものを新しいチェーンテーブルに置いて、それから後ろに移動して比較を続けて、たぶん構想はこのようにして、ただ実現するのが面倒です.また、2つのチェーンテーブルのキー値を1つの配列に配置し、配列をソートし、配列の要素を新しいノードに順番に配置し、新しいチェーンテーブルを入れればいいという奇抜な考え方も考えられています.
コード(Java):
他山の石:
この方法の考え方は実はそれほど悪くないが,再帰的な方法を使っている.1 msかかりますが、上の私のコードは16 msかかります.本当にこんなに大きな違いがありますか.の
統合:https://github.com/Cloudox/LeetCode-Record
作者のトップページを見る
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
注意:
2つの順序付きチェーンテーブルを結合し、新しいチェーンテーブルを返します.新しいチェーンテーブルには、元の2つのチェーンテーブルのすべてのノードが含まれている必要があります.
考え方:
2つの秩序あるチェーンテーブルを統合するのは実は構想が直接的で、2つのチェーンテーブルの最初のノードから大きさを比較して、小さいものを新しいチェーンテーブルに置いて、それから後ろに移動して比較を続けて、たぶん構想はこのようにして、ただ実現するのが面倒です.また、2つのチェーンテーブルのキー値を1つの配列に配置し、配列をソートし、配列の要素を新しいノードに順番に配置し、新しいチェーンテーブルを入れればいいという奇抜な考え方も考えられています.
コード(Java):
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null) return l2;
else if (l2 == null) return l1;
ListNode result;
ListNode mark;
if (l1.val <= l2.val) {
result = l1;
l1 = l1.next;
} else {
result = l2;
l2 = l2.next;
}
mark = result;
while (l1 != null) {
if (l2 != null && l2.val < l1.val) {
mark.next = l2;
mark = mark.next;
l2 = l2.next;
} else {
mark.next = l1;
mark = mark.next;
l1 = l1.next;
}
}
if (l2 != null) mark.next = l2;
return result;
}
}
他山の石:
public ListNode mergeTwoLists(ListNode l1, ListNode l2){
if(l1 == null) return l2;
if(l2 == null) return l1;
if(l1.val < l2.val){
l1.next = mergeTwoLists(l1.next, l2);
return l1;
} else{
l2.next = mergeTwoLists(l1, l2.next);
return l2;
}
}
この方法の考え方は実はそれほど悪くないが,再帰的な方法を使っている.1 msかかりますが、上の私のコードは16 msかかります.本当にこんなに大きな違いがありますか.の
統合:https://github.com/Cloudox/LeetCode-Record
作者のトップページを見る