Skip to content

Commit fdc593b

Browse files
Merge pull request #31 from fluttermiddlepodcast/206_Reverse_Linked_List
added "206. Reverse Linked List"
2 parents 4db516b + 1129155 commit fdc593b

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Solutions from [LeetCode](https://leetcode.com) on Dart.
1313
| 144. Binary Tree Preorder Traversal | [Link](https://leetcode.com/problems/binary-tree-preorder-traversal/) | [Link](./lib/easy/binary_tree_preorder_traversal.dart) |
1414
| 169. Majority Element | [Link](https://leetcode.com/problems/majority-element/) | [Link](./lib/easy/majority_element.dart) |
1515
| 203. Remove Linked List Elements | [Link](https://leetcode.com/problems/remove-linked-list-elements/) | [Link](./lib/easy/remove_linked_list_elements.dart) |
16+
| 206. Reverse Linked List | [Link](https://leetcode.com/problems/reverse-linked-list/) | [Link](./lib/easy/reverse_linked_list.dart) |
1617
| 217. Contains Duplicate | [Link](https://leetcode.com/problems/contains-duplicate/) | [Link](./lib/easy/contains_duplicate.dart) |
1718
| 226. Invert Binary Tree | [Link](https://leetcode.com/problems/invert-binary-tree/) | [Link](./lib/easy/invert_binary_tree.dart) |
1819
| 342. Power of Four | [Link](https://leetcode.com/problems/power-of-four/) | [Link](./lib/easy/power_of_four.dart) |

lib/easy/reverse_linked_list.dart

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
ListNode? reverseList(ListNode? head) {
3+
ListNode? prev;
4+
ListNode? curr = head;
5+
ListNode? next;
6+
while (curr != null) {
7+
next = curr.next;
8+
curr.next = prev;
9+
prev = curr;
10+
curr = next;
11+
}
12+
return prev;
13+
}
14+
}
15+
16+
class ListNode {
17+
int val;
18+
ListNode? next;
19+
20+
ListNode([this.val = 0, this.next]);
21+
}
+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import 'package:leetcode_dart/easy/reverse_linked_list.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
group(
6+
'Example tests',
7+
() {
8+
final rll = Solution();
9+
test(
10+
'[5, 4, 3, 2, 1]',
11+
() => expect(
12+
true,
13+
_areEqual(
14+
_fromList([5, 4, 3, 2, 1]),
15+
rll.reverseList(
16+
_fromList(
17+
[1, 2, 3, 4, 5],
18+
),
19+
),
20+
),
21+
),
22+
);
23+
test(
24+
'[2, 1]',
25+
() => expect(
26+
true,
27+
_areEqual(
28+
_fromList([2, 1]),
29+
rll.reverseList(
30+
_fromList([1, 2]),
31+
),
32+
),
33+
),
34+
);
35+
test(
36+
'',
37+
() => expect(
38+
true,
39+
_areEqual(
40+
null,
41+
rll.reverseList(null),
42+
),
43+
),
44+
);
45+
},
46+
);
47+
}
48+
49+
ListNode _fromList(List<int> list) {
50+
final head = ListNode(list.first);
51+
var p = head;
52+
for (int i = 1; i < list.length; i++) {
53+
p.next = ListNode(list[i]);
54+
p = p.next!;
55+
}
56+
return head;
57+
}
58+
59+
bool _areEqual(ListNode? f, ListNode? s) {
60+
while (f != null && s != null) {
61+
if (f.val != s.val) {
62+
return false;
63+
}
64+
f = f.next;
65+
s = s.next;
66+
}
67+
return f == null && s == null;
68+
}

0 commit comments

Comments
 (0)