Skip to content

Commit 4540850

Browse files
Update solutions
1 parent e1e2f23 commit 4540850

14 files changed

+150
-16
lines changed

analysis_options.yaml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,9 @@ include: package:lints/recommended.yaml
1515

1616
# Uncomment the following section to specify additional rules.
1717

18-
# linter:
19-
# rules:
20-
# - camel_case_types
21-
18+
linter:
19+
rules:
20+
- prefer_single_quotes
2221
# analyzer:
2322
# exclude:
2423
# - path/to/excluded/files/**

lib/leetcode.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export 'matrix/rotate.dart';
1313
export 'stack/is_valid.dart';
1414
export 'string/is_anagram.dart';
1515
export 'string/is_palindrome.dart';
16+
export 'string/length_of_longest_substring.dart';
1617
export 'string/letter_combinations.dart';
1718
export 'tree/invert_tree.dart';
1819
export 'tree/is_same_tree.dart';

lib/list/merge_two_lists.dart

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import 'list_node.dart';
2+
3+
ListNode? mergeTwoLists(ListNode? list1, ListNode? list2) {
4+
if (list1 == null && list2 == null) {
5+
return null;
6+
}
7+
8+
if (list1 == null) {
9+
return list2;
10+
}
11+
12+
if (list2 == null) {
13+
return list1;
14+
}
15+
16+
if (list1.val < list2.val) {
17+
return ListNode(list1.val, mergeTwoLists(list1.next, list2));
18+
}
19+
20+
return ListNode(list2.val, mergeTwoLists(list1, list2.next));
21+
}

lib/matrix/search_matrix.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
bool searchMatrix(List<List<int>> matrix, int target) {
2+
var m = matrix.length;
3+
var n = matrix[0].length;
4+
var row = m - 1;
5+
var col = 0;
6+
7+
while (row >= 0 && row < m && col >= 0 && col < n) {
8+
if (matrix[row][col] > target) {
9+
row -= 1;
10+
} else if (matrix[row][col] < target) {
11+
col += 1;
12+
} else {
13+
return true;
14+
}
15+
}
16+
17+
return false;
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import 'dart:math';
2+
3+
int lengthOfLongestSubstring(String s) {
4+
var map = <String, int>{};
5+
var longest = 0;
6+
var left = 0;
7+
for (var right = 0; right < s.length; right++) {
8+
var c = s[right];
9+
if (map.containsKey(c)) {
10+
left = max(left, map[c]!);
11+
}
12+
13+
longest = max(longest, right - left + 1);
14+
map[c] = right + 1;
15+
}
16+
17+
return longest;
18+
}

lib/string/letter_combinations.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import 'dart:collection';
2-
31
List<String> letterCombinations(String digits) {
42
const chars = {
53
'1': '',

lib/tree/kth_smallest.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ int kthSmallest(TreeNode? root, int k) {
44
var s = <TreeNode?>[];
55
TreeNode? curr = root;
66

7-
while(true) {
8-
while(curr != null) {
7+
while (true) {
8+
while (curr != null) {
99
s.add(curr);
1010
curr = curr.left;
1111
}

test/list/merge_two_lists_test.dart

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import 'package:leetcode/leetcode.dart';
2+
import 'package:leetcode/list/merge_two_lists.dart';
3+
import 'package:test/test.dart';
4+
5+
void main() {
6+
test('example 1', () {
7+
var list1 = ListNode.fromList([1, 2, 4]);
8+
var list2 = ListNode.fromList([1, 3, 4]);
9+
var expected = ListNode.fromList([1, 1, 2, 3, 4, 4]);
10+
var result = mergeTwoLists(list1, list2);
11+
expect(mergeTwoLists(list1, list2), equals(expected));
12+
});
13+
14+
test('example 2', () {
15+
var list1 = ListNode.fromList([]);
16+
var list2 = ListNode.fromList([]);
17+
var expected = ListNode.fromList([]);
18+
expect(mergeTwoLists(list1, list2), equals(expected));
19+
});
20+
21+
test('example 3', () {
22+
var list1 = ListNode.fromList([]);
23+
var list2 = ListNode.fromList([0]);
24+
var expected = ListNode.fromList([0]);
25+
expect(mergeTwoLists(list1, list2), equals(expected));
26+
});
27+
}

test/matrix/search_matrix_test.dart

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import 'package:leetcode/matrix/search_matrix.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
test('example 1', () {
6+
var matrix = [
7+
[1, 3, 5, 7],
8+
[10, 11, 16, 20],
9+
[23, 30, 34, 60]
10+
];
11+
var target = 3;
12+
var expected = true;
13+
expect(searchMatrix(matrix, target), equals(expected));
14+
});
15+
16+
test('example 1', () {
17+
var matrix = [
18+
[1, 3, 5, 7],
19+
[10, 11, 16, 20],
20+
[23, 30, 34, 60]
21+
];
22+
var target = 13;
23+
var expected = false;
24+
expect(searchMatrix(matrix, target), equals(expected));
25+
});
26+
}

test/string/is_anagram_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ void main() {
99
expect(isAnagram(s, t), equals(expected));
1010
});
1111

12-
test('example 2', () {
12+
test('example 2', () {
1313
var s = 'rat';
1414
var t = 'car';
1515
var expected = false;

0 commit comments

Comments
 (0)