Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3da92bb

Browse files
solved: Merge k Sorted Lists
1 parent c349f96 commit 3da92bb

File tree

6 files changed

+92
-39
lines changed

6 files changed

+92
-39
lines changed

‎README.md‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,4 +281,39 @@ int longestValidParentheses(String s) {
281281
282282
return longest;
283283
}
284+
```
285+
286+
### Merge k Sorted Lists
287+
288+
```dart
289+
ListNode? mergeKLists(List<ListNode?> lists) {
290+
List<int> merge = [];
291+
292+
for (final list in lists) {
293+
merge.addAll(mergeValue(list, []));
294+
}
295+
296+
merge.sort();
297+
298+
return linkedNodes(merge);
299+
}
300+
301+
// Utils
302+
List<int> mergeValue(ListNode? head, List<int> result) {
303+
if (head == null) return result;
304+
305+
return mergeValue(head.next, [...result, head.val]);
306+
}
307+
308+
ListNode? linkedNodes(List<int> values) {
309+
if (values.isEmpty) return null;
310+
311+
List<ListNode> nodes = values.map((e) => ListNode(e)).toList();
312+
313+
for (int i = 0; i < nodes.length - 1; i++) {
314+
nodes[i].next = nodes[i + 1];
315+
}
316+
317+
return nodes.first;
318+
}
284319
```

‎helpers/list_node_helper.dart‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import '../models/list_node.dart';
2+
3+
List<int> mergeValue(ListNode? head, List<int> result) {
4+
if (head == null) return result;
5+
6+
return mergeValue(head.next, [...result, head.val]);
7+
}
8+
9+
ListNode? linkedNodes(List<int> values) {
10+
if (values.isEmpty) return null;
11+
12+
List<ListNode> nodes = values.map((e) => ListNode(e)).toList();
13+
14+
for (int i = 0; i < nodes.length - 1; i++) {
15+
nodes[i].next = nodes[i + 1];
16+
}
17+
18+
return nodes.first;
19+
}

‎merge_k_sorted_lists.dart‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import 'helpers/list_node_helper.dart';
2+
import 'models/list_node.dart';
3+
4+
void main(List<String> args) {
5+
List<List<List<int>>> cases = [
6+
[
7+
[1, 4, 5],
8+
[1, 3, 4],
9+
[2, 6]
10+
],
11+
[],
12+
[[]],
13+
];
14+
15+
for (final testcase in cases) {
16+
print(
17+
mergeValue(mergeKLists(testcase.map((e) => linkedNodes(e)).toList()), []),
18+
);
19+
}
20+
}
21+
22+
ListNode? mergeKLists(List<ListNode?> lists) {
23+
List<int> merge = [];
24+
25+
for (final list in lists) {
26+
merge.addAll(mergeValue(list, []));
27+
}
28+
29+
merge.sort();
30+
31+
return linkedNodes(merge);
32+
}

‎models/list_node.dart‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class ListNode {
2+
int val;
3+
ListNode? next;
4+
ListNode([this.val = 0, this.next]);
5+
}

‎reverse_nodes_in_k-group.dart‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
class ListNode {
2-
int val;
3-
ListNode? next;
4-
ListNode([this.val = 0, this.next]);
5-
}
1+
import 'models/list_node.dart';
62

73
void main(List<String> args) {
84
List<int> vals = [1, 2, 3, 4, 5];

‎zigzag_conversion.js‎

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /