From 6679b94eaa79cab960188979fd02e771ff939869 Mon Sep 17 00:00:00 2001 From: Nikhil Anand <34477129+NikSWE@users.noreply.github.com> Date: Tue, 3 Jan 2023 00:44:57 +0000 Subject: [PATCH 1/8] Create: 0217-contains-duplicate.dart --- dart/0217-contains-duplicate.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 dart/0217-contains-duplicate.dart diff --git a/dart/0217-contains-duplicate.dart b/dart/0217-contains-duplicate.dart new file mode 100644 index 000000000..c05e64bbb --- /dev/null +++ b/dart/0217-contains-duplicate.dart @@ -0,0 +1,15 @@ +// Time Complexity: O(n) +// Space Complexity: O(n) + +class Solution { + bool containsDuplicate(List nums) { + Set hashSet = Set(); + for (int n in nums) { + if (hashSet.contains(n)) { + return true; + } + hashSet.add(n); + } + return false; + } +} From de4d7647dd9e052c86c8bdd44d6eb7fe7cab5201 Mon Sep 17 00:00:00 2001 From: Nikhil Anand <34477129+NikSWE@users.noreply.github.com> Date: Tue, 3 Jan 2023 00:48:13 +0000 Subject: [PATCH 2/8] Update workflow for Dart solutions --- .github/workflows/updateCompletionTable.js | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/updateCompletionTable.js b/.github/workflows/updateCompletionTable.js index 8406c81af..cdc7c56e1 100644 --- a/.github/workflows/updateCompletionTable.js +++ b/.github/workflows/updateCompletionTable.js @@ -17,6 +17,7 @@ const FOLDER_TO_LANG = { swift: 'Swift', cpp: 'C++', kotlin: 'Kotlin', + dart: 'Dart', }; const PREPEND_PATH = process.argv[2] || './'; const TEMPLATE_PATH = process.argv[3] || './README_template.md'; From 2eca4c0fb82c547f3ece6bfeb09a277e8a481ddb Mon Sep 17 00:00:00 2001 From: Nikhil Anand <34477129+NikSWE@users.noreply.github.com> Date: Tue, 3 Jan 2023 01:13:39 +0000 Subject: [PATCH 3/8] Add Dart to the list of languages --- updateSiteData.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/updateSiteData.js b/updateSiteData.js index fa32659c7..9f68d7570 100644 --- a/updateSiteData.js +++ b/updateSiteData.js @@ -71,6 +71,11 @@ const languages = [ directory: 'scala', extension: 'scala' }, + { + name: 'Dart', + directory: 'dart', + extension: 'dart' + }, ] // Rename files to match leetcode url path, and normalize problem number to four digits. From 9a3440c3a5f34082de4d47491e71941247778526 Mon Sep 17 00:00:00 2001 From: Nikhil Anand <34477129+NikSWE@users.noreply.github.com> Date: Tue, 3 Jan 2023 01:15:43 +0000 Subject: [PATCH 4/8] Add Dart to language map --- verifySiteData.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/verifySiteData.js b/verifySiteData.js index 254f7008c..f360d2332 100644 --- a/verifySiteData.js +++ b/verifySiteData.js @@ -71,6 +71,11 @@ const languageMap = { directory: 'scala', extension: 'scala' }, + dart: { + name: 'Dart', + directory: 'dart', + extension: 'dart' + }, }; const GITHUB_BASE_URL = 'https://github.com/neetcode-gh/leetcode/blob/main'; From 65cac1edee19768f523a3a846282d600116444ea Mon Sep 17 00:00:00 2001 From: Nikhil Anand <34477129+NikSWE@users.noreply.github.com> Date: Wed, 4 Jan 2023 01:25:47 +0000 Subject: [PATCH 5/8] Create: 0242-valid-anagram.dart --- dart/0242-valid-anagram.dart | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 dart/0242-valid-anagram.dart diff --git a/dart/0242-valid-anagram.dart b/dart/0242-valid-anagram.dart new file mode 100644 index 000000000..8640c03d5 --- /dev/null +++ b/dart/0242-valid-anagram.dart @@ -0,0 +1,24 @@ +// Time Complexity: O(s + t) +// Space Complexity: O(1) + +class Solution { + bool isAnagram(String s, String t) { + if (s.length != t.length) return false; + + final counter = List.filled(26, 0); + + for (int i = 0; i < s.length; i++) { + counter[s[i].codeUnitAt(0) - 'a'.codeUnitAt(0)]++; + } + + for (int i = 0; i < t.length; i++) { + counter[t[i].codeUnitAt(0) - 'a'.codeUnitAt(0)]--; + } + + for (int val in counter) { + if (val != 0) return false; + } + + return true; + } +} \ No newline at end of file From ed984b5b9a6315103df47957c84bfb468a6d09bf Mon Sep 17 00:00:00 2001 From: Nikhil Anand <34477129+NikSWE@users.noreply.github.com> Date: Wed, 4 Jan 2023 03:20:56 +0000 Subject: [PATCH 6/8] Create: 0036-valid-sudoku.dart --- dart/0036-valid-sudoku.dart | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 dart/0036-valid-sudoku.dart diff --git a/dart/0036-valid-sudoku.dart b/dart/0036-valid-sudoku.dart new file mode 100644 index 000000000..891f63da0 --- /dev/null +++ b/dart/0036-valid-sudoku.dart @@ -0,0 +1,31 @@ +// As the board size is fixed +// it will result in the following +// Time Complexity: O(1) +// Space Complexity: O(1) + +class Solution { + bool isValidSudoku(List> board) { + var rows = List.filled(9, 0); + var cols = List.filled(9, 0); + var grids = List.filled(9, 0); + + for (int r = 0; r < 9; r++) { + for (int c = 0; c < 9; c++) { + if (board[r][c] == ".") continue; + + var idx = int.parse(board[r][c]) - 1; + + if (rows[r] & 1 << idx != 0) return false; + rows[r] |= 1 << idx; + + if (cols[c] & 1 << idx != 0) return false; + cols[c] |= 1 << idx; + + if (grids[r ~/ 3 * 3 + c ~/ 3] & 1 << idx != 0) return false; + grids[r ~/ 3 * 3 + c ~/ 3] |= 1 << idx; + } + } + + return true; + } +} From 4b9a4e357fe0f5f80ea963c6808e966de81343b7 Mon Sep 17 00:00:00 2001 From: Nikhil Anand <34477129+NikSWE@users.noreply.github.com> Date: Wed, 4 Jan 2023 03:42:02 +0000 Subject: [PATCH 7/8] Create: 0001-two-sum.dart --- dart/0001-two-sum.dart | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 dart/0001-two-sum.dart diff --git a/dart/0001-two-sum.dart b/dart/0001-two-sum.dart new file mode 100644 index 000000000..084c9c0b1 --- /dev/null +++ b/dart/0001-two-sum.dart @@ -0,0 +1,14 @@ +// Time Complexity: O(n) +// Space Complexity: O(n) + +class Solution { + List twoSum(List nums, int target) { + var map = Map(); + for (int i = 0; i < nums.length; i++) { + var x = target - nums[i]; + if (map.containsKey(x)) return [map[x]!, i]; + map[nums[i]] = i; + } + throw ""; + } +} From 5a6c5c36bfb1baa5b4c790f5916e1e2a738a5c90 Mon Sep 17 00:00:00 2001 From: Nikhil Anand <34477129+NikSWE@users.noreply.github.com> Date: Wed, 4 Jan 2023 04:25:48 +0000 Subject: [PATCH 8/8] Create: 0049-group-anagrams.dart --- dart/0049-group-anagrams.dart | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 dart/0049-group-anagrams.dart diff --git a/dart/0049-group-anagrams.dart b/dart/0049-group-anagrams.dart new file mode 100644 index 000000000..90773c3d6 --- /dev/null +++ b/dart/0049-group-anagrams.dart @@ -0,0 +1,23 @@ +// Time Complexity: O(n * m) +// Space Complexity: O(n * m) + +class Solution { + List> groupAnagrams(List strs) { + var map = Map>(); + + for (var str in strs) { + var count = List.filled(26, 0); + for (int i = 0; i < str.length; i++) { + count[str[i].codeUnitAt(0) - 'a'.codeUnitAt(0)]++; + } + var key = count.join("#"); + if (map.containsKey(key)) { + map[key]!.add(str); + continue; + } + map[key] = [str]; + } + + return List.from(map.values); + } +}