`** (e.g. `java/0001-two-sum.java`)
+ - Make sure the `problem-number` is formatted as four digits adding leading zeroes if necessary
+ - You can find the `name-of-problem` in the leetcode URL, e.g https://leetcode.com/problems/ _**two-sum**_ /
+- **Give your PR a succinct and accurate title** (e.g. _"Create: 0001-two-sum.py"_)
+- Prefer **one solution/change per PR** (not a hard and fast rule, but will typically make the review cycle shorter)
+- **Follow the** [PR template](./.github/pull_request_template.md) and add additional information when needed
+- **Make sure your code passes** submission on [leetcode.com](https://leetcode.com) for the problem it solves
+- **Write clean code** (Your code should use semantically meaningful variable/method names, consistent style, etc) and easy to understand. for example, a single letter is probably not a semantically meaningful name
+- **Ensure the problem is not already solved** in the language you're contributing in
+
+## FAQs
+
+**Q:** What should my solution include?
+
+**A:** You can keep your solution exactly the same as the one you submit to leetcode, you don't need to write tests or your own implementation of leetcode's built-ins.
+##
+
+**Q:** What if there are multiple ways to solve the problem?
+
+**A:** Multiple solutions to the same problem are accepted (as long as they differ in approach or time/memory complexity), although the first solution should always follow the same algorithm shown on [the channel](https://www.youtube.com/c/neetcode). Please make sure distinct solutions are grouped together in the same file, with appropriately differentiating names (e.g. `isValidBstIterative` and `isValidBstRecursive`)
+##
+
+**Q:** What if my solution has a lower runtime but the same time/memory complexity?
+
+**A:** Leetcode's runtime measurement can be severely inaccurate varying based on server load, time of day and many other factors. In general, readability and clarity of the code (in the context of interviews) are features more important than performance gains, however changes that transparently improve performance will be accepted.
+##
+
+**Q:** What if the problem I want to add isn't in the Neetcode 150 list or Missing Solutions table?
+
+**A:** Questions outside of the Neetcode 150 list can be added but please prioritise adding the listed solutions first.
+##
+
+Thanks for contributing 🚀
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000..144c6f237
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 neetcode-gh
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Neetcode-update.iml b/Neetcode-update.iml
new file mode 100644
index 000000000..908ad4f52
--- /dev/null
+++ b/Neetcode-update.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 82c045bf8..621435471 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,576 @@
-# Leetcode solutions for [NeetCode](https://www.youtube.com/c/neetcode)
+# Leetcode solutions for 🚀 [NeetCode.io](https://neetcode.io)
+> This repo hosts the solutions found on [NeetCode.io](https://neetcode.io) including the solutions shown on the [NeetCode YouTube channel](https://www.youtube.com/c/neetcode). The site will periodically be updated with new solutions from this repo!
-### Contributing
+
-I mostly do solutions in Python, but if you would like to contribute solutions for other common languages like Java, C++ and JavaScript, please feel free to make a pull request! :)
+Solutions from these languages will be linked from [NeetCode.io](https://neetcode.io):
+> Python, Java, JavaScript, C++, Go, Swift, C#, TypeScript, Rust, Kotlin, Ruby, C, Scala and Dart
+
+Solutions are also welcome for any other *supported* language on leetcode.com!
+
+## Contributing
+**Please read the [contributing guidlines](./CONTRIBUTING.md) before opening a PR**
+
+
+To contribute, please fork this repo and open a PR adding a [missing solution](#missing-solutions) from the supported languages.
+
+If you would like to have collaborator permissions on the repo to merge your own PRs or review others' PRs please let me know.
+
+## Credits
+
+
+
+
+
+## Missing Solutions
+
+### Arrays & Hashing
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0217 - Contains Duplicate](https://leetcode.com/problems/contains-duplicate/) | ❌
| [✔️](c%2F0217-contains-duplicate.c)
| [✔️](cpp%2F0217-contains-duplicate.cpp)
| [✔️](csharp%2F0217-contains-duplicate.cs)
| [✔️](dart%2F0217-contains-duplicate.dart)
| [✔️](go%2F0217-contains-duplicate.go)
| ❌
| [✔️](java%2F0217-contains-duplicate.java)
| [✔️](javascript%2F0217-contains-duplicate.js)
| [✔️](kotlin%2F0217-contains-duplicate.kt)
| [✔️](python%2F0217-contains-duplicate.py)
| [✔️](ruby%2F0217-contains-duplicate.rb)
| [✔️](rust%2F0217-contains-duplicate.rs)
| [✔️](scala%2F0217-contains-duplicate.scala)
| [✔️](swift%2F0217-contains-duplicate.swift)
| [✔️](typescript%2F0217-contains-duplicate.ts)
+[0242 - Valid Anagram](https://leetcode.com/problems/valid-anagram/) | ❌
| [✔️](c%2F0242-valid-anagram.c)
| [✔️](cpp%2F0242-valid-anagram.cpp)
| [✔️](csharp%2F0242-valid-anagram.cs)
| [✔️](dart%2F0242-valid-anagram.dart)
| [✔️](go%2F0242-valid-anagram.go)
| ❌
| [✔️](java%2F0242-valid-anagram.java)
| [✔️](javascript%2F0242-valid-anagram.js)
| [✔️](kotlin%2F0242-valid-anagram.kt)
| [✔️](python%2F0242-valid-anagram.py)
| [✔️](ruby%2F0242-valid-anagram.rb)
| [✔️](rust%2F0242-valid-anagram.rs)
| [✔️](scala%2F0242-valid-anagram.scala)
| [✔️](swift%2F0242-valid-anagram.swift)
| [✔️](typescript%2F0242-valid-anagram.ts)
+[1929 - Concatenation of Array](https://leetcode.com/problems/concatenation-of-array/) | ❌
| [✔️](c%2F1929-concatenation-of-array.c)
| [✔️](cpp%2F1929-concatenation-of-array.cpp)
| [✔️](csharp%2F1929-concatenation-of-array.cs)
| [✔️](dart%2F1929-concatenation-of-array.dart)
| [✔️](go%2F1929-concatenation-of-array.go)
| ❌
| [✔️](java%2F1929-concatenation-of-array.java)
| [✔️](javascript%2F1929-concatenation-of-array.js)
| [✔️](kotlin%2F1929-concatenation-of-array.kt)
| [✔️](python%2F1929-concatenation-of-array.py)
| [✔️](ruby%2F1929-concatenation-of-array.rb)
| [✔️](rust%2F1929-concatenation-of-array.rs)
| [✔️](scala%2F1929-concatenation-of-array.scala)
| [✔️](swift%2F1929-concatenation-of-array.swift)
| [✔️](typescript%2F1929-concatenation-of-array.ts)
+[1299 - Replace Elements With Greatest Element On Right Side](https://leetcode.com/problems/replace-elements-with-greatest-element-on-right-side/) | ❌
| [✔️](c%2F1299-Replace-Elements-With-Greatest-Element-On-Right-Side.c)
| [✔️](cpp%2F1299-Replace-Elements-with-Greatest-Element-on-Right-Side.cpp)
| [✔️](csharp%2F1299-Replace-Elements-With-Greatest-Element-On-Right-Side.cs)
| [✔️](dart%2F1299-replace-elements-with-greatest-element-on-right-side.dart)
| [✔️](go%2F1299-Replace-Elements-With-Greatest-Element-On-Right-Side.go)
| ❌
| [✔️](java%2F1299-Replace-Elements-With-Greatest-Element-On-Right-Side.java)
| [✔️](javascript%2F1299-Replace-Elements-with-Greatest-Element-on-Right-Side.js)
| [✔️](kotlin%2F1299-replace-elements-with-greatest-element-on-right-side.kt)
| [✔️](python%2F1299-replace-elements-with-greatest-element-on-right-side.py)
| [✔️](ruby%2F1299-replace-elements-with-greatest-element-on-right-side.rb)
| [✔️](rust%2F1299-Replace-Elements-With-Greatest-Element-On-Right-Side.rs)
| ❌
| [✔️](swift%2F1299-replace-elements-with-greatest-element-on-right-side.swift)
| [✔️](typescript%2F1299-Replace-Elements-With-Greatest-Element-On-Right-Side.ts)
+[0392 - Is Subsequence](https://leetcode.com/problems/is-subsequence/) | ❌
| [✔️](c%2F0392-is-subsequence.c)
| [✔️](cpp%2F0392-is-subsequence.cpp)
| [✔️](csharp%2F0392-is-subsequence.cs)
| [✔️](dart%2F0392-is-subsequence.dart)
| [✔️](go%2F0392-is-subsequence.go)
| ❌
| [✔️](java%2F0392-is-subsequence.java)
| [✔️](javascript%2F0392-is-subsequence.js)
| [✔️](kotlin%2F0392-is-subsequence.kt)
| [✔️](python%2F0392-is-subsequence.py)
| [✔️](ruby%2F0392-is-subsequence.rb)
| [✔️](rust%2F0392-is-subsequence.rs)
| ❌
| [✔️](swift%2F0392-is-subsequence.swift)
| [✔️](typescript%2F0392-is-subsequence.ts)
+[0058 - Length of Last Word](https://leetcode.com/problems/length-of-last-word/) | ❌
| [✔️](c%2F0058-length-of-last-word.c)
| [✔️](cpp%2F0058-length-of-last-word.cpp)
| [✔️](csharp%2F0058-length-of-last-word.cs)
| [✔️](dart%2F0058-length-of-last-word.dart)
| [✔️](go%2F0058-Length-of-Last-Word.go)
| ❌
| [✔️](java%2F0058-length-of-last-word.java)
| [✔️](javascript%2F0058-length-of-last-word.js)
| [✔️](kotlin%2F0058-length-of-last-word.kt)
| [✔️](python%2F0058-length-of-last-word.py)
| [✔️](ruby%2F0058-length-of-last-word.rb)
| [✔️](rust%2F0058-length-of-last-word.rs)
| [✔️](scala%2F0058-length-of-last-word.scala)
| [✔️](swift%2F0058-Length-of-Last-Word.swift)
| [✔️](typescript%2F0058-length-of-last-word.ts)
+[0001 - Two Sum](https://leetcode.com/problems/two-sum/) | ❌
| [✔️](c%2F0001-two-sum.c)
| [✔️](cpp%2F0001-two-sum.cpp)
| [✔️](csharp%2F0001-two-sum.cs)
| [✔️](dart%2F0001-two-sum.dart)
| [✔️](go%2F0001-two-sum.go)
| ❌
| [✔️](java%2F0001-two-sum.java)
| [✔️](javascript%2F0001-two-sum.js)
| [✔️](kotlin%2F0001-two-sum.kt)
| [✔️](python%2F0001-two-sum.py)
| [✔️](ruby%2F0001-two-sum.rb)
| [✔️](rust%2F0001-two-sum.rs)
| [✔️](scala%2F0001-two-sum.scala)
| [✔️](swift%2F0001-two-sum.swift)
| [✔️](typescript%2F0001-two-sum.ts)
+[0014 - Longest Common Prefix](https://leetcode.com/problems/longest-common-prefix/) | ❌
| [✔️](c%2F0014-Longest-Common-Prefix.c)
| [✔️](cpp%2F0014-longest-common-prefix.cpp)
| [✔️](csharp%2F0014-longest-common-prefix.cs)
| [✔️](dart%2F0014-longest-common-prefix.dart)
| [✔️](go%2F0014-longest-common-prefix.go)
| ❌
| [✔️](java%2F0014-longest-common-prefix.java)
| [✔️](javascript%2F0014-longest-common-prefix.js)
| [✔️](kotlin%2F0014-longest-common-prefix.kt)
| [✔️](python%2F0014-longest-common-prefix.py)
| ❌
| [✔️](rust%2F0014-longest-common-prefix.rs)
| ❌
| [✔️](swift%2F0014-longest-common-prefix.swift)
| [✔️](typescript%2F0014-longest-common-prefix.ts)
+[0049 - Group Anagrams](https://leetcode.com/problems/group-anagrams/) | ❌
| [✔️](c%2F0049-group-anagrams.c)
| [✔️](cpp%2F0049-group-anagrams.cpp)
| [✔️](csharp%2F0049-group-anagrams.cs)
| [✔️](dart%2F0049-group-anagrams.dart)
| [✔️](go%2F0049-group-anagrams.go)
| ❌
| [✔️](java%2F0049-group-anagrams.java)
| [✔️](javascript%2F0049-group-anagrams.js)
| [✔️](kotlin%2F0049-group-anagrams.kt)
| [✔️](python%2F0049-group-anagrams.py)
| [✔️](ruby%2F0049-group-anagrams.rb)
| [✔️](rust%2F0049-group-anagrams.rs)
| [✔️](scala%2F0049-group-anagrams.scala)
| [✔️](swift%2F0049-group-anagrams.swift)
| [✔️](typescript%2F0049-group-anagrams.ts)
+[0118 - Pascals Triangle](https://leetcode.com/problems/pascals-triangle/) | ❌
| [✔️](c%2F0118-pascals-triangle.c)
| [✔️](cpp%2F0118-pascals-triangle.cpp)
| [✔️](csharp%2F0118-pascals-triangle.cs)
| [✔️](dart%2F0118-pascals-triangle.dart)
| [✔️](go%2F0118-pascals-triangle.go)
| ❌
| [✔️](java%2F0118-pascals-triangle.java)
| [✔️](javascript%2F0118-pascals-triangle.js)
| [✔️](kotlin%2F0118-pascals-triangle.kt)
| [✔️](python%2F0118-pascals-triangle.py)
| ❌
| [✔️](rust%2F0118-pascals-triangle.rs)
| ❌
| ❌
| [✔️](typescript%2F0118-pascals-triangle.ts)
+[0027 - Remove Element](https://leetcode.com/problems/remove-element/) | ❌
| [✔️](c%2F0027-remove-element.c)
| [✔️](cpp%2F0027-remove-element.cpp)
| [✔️](csharp%2F0027-remove-element.cs)
| [✔️](dart%2F0027-remove-element.dart)
| [✔️](go%2F0027-remove-element.go)
| ❌
| [✔️](java%2F0027-remove-element.java)
| [✔️](javascript%2F0027-remove-element.js)
| [✔️](kotlin%2F0027-remove-element.kt)
| [✔️](python%2F0027-remove-element.py)
| ❌
| [✔️](rust%2F0027-remove-element.rs)
| ❌
| [✔️](swift%2F0027-Remove-Element.swift)
| [✔️](typescript%2F0027-remove-element.ts)
+[0929 - Unique Email Addresses](https://leetcode.com/problems/unique-email-addresses/) | ❌
| [✔️](c%2F0929-unique-email-addresses.c)
| [✔️](cpp%2F0929-unique-email-addresses.cpp)
| [✔️](csharp%2F0929-unique-email-addresses.cs)
| [✔️](dart%2F0929-unique-email-addresses.dart)
| [✔️](go%2F0929-unique-email-addresses.go)
| ❌
| [✔️](java%2F0929-unique-email-addresses.java)
| [✔️](javascript%2F0929-unique-email-addresses.js)
| [✔️](kotlin%2F0929-unique-email-addresses.kt)
| [✔️](python%2F0929-unique-email-addresses.py)
| ❌
| [✔️](rust%2F0929-unique-email-addresses.rs)
| ❌
| [✔️](swift%2F0929-unique-email-addresses.swift)
| [✔️](typescript%2F0929-unique-email-addresses.ts)
+[0205 - Isomorphic Strings](https://leetcode.com/problems/isomorphic-strings/) | ❌
| [✔️](c%2F0205-isomorphic-strings.c)
| [✔️](cpp%2F0205-Isomorphic-Strings.cpp)
| [✔️](csharp%2F0205-isomorphic-strings.cs)
| ❌
| [✔️](go%2F0205-isomorphic-strings.go)
| ❌
| [✔️](java%2F0205-isomorphic-strings.java)
| [✔️](javascript%2F0205-isomorphic-strings.js)
| [✔️](kotlin%2F0205-isomorphic-strings.kt)
| [✔️](python%2F0205-isomorphic-strings.py)
| ❌
| [✔️](rust%2F0205-isomorphic-strings.rs)
| ❌
| [✔️](swift%2F0205-isomorphic-strings.swift)
| [✔️](typescript%2F0205-isomorphic-strings.ts)
+[0605 - Can Place Flowers](https://leetcode.com/problems/can-place-flowers/) | ❌
| [✔️](c%2F0605-can-place-flowers.c)
| [✔️](cpp%2F0605-can-place-flowers.cpp)
| [✔️](csharp%2F0605-can-place-flowers.cs)
| ❌
| [✔️](go%2F0605-can-place-flowers.go)
| ❌
| [✔️](java%2F0605-can-place-flowers.java)
| [✔️](javascript%2F0605-can-place-flowers.js)
| [✔️](kotlin%2F0605-can-place-flowers.kt)
| [✔️](python%2F0605-can-place-flowers.py)
| ❌
| [✔️](rust%2F0605-can-place-flowers.rs)
| ❌
| [✔️](swift%2F0605-can-place-flowers.swift)
| [✔️](typescript%2F0605-can-place-flowers.ts)
+[0169 - Majority Element](https://leetcode.com/problems/majority-element/) | ❌
| [✔️](c%2F0169-majority-element.c)
| [✔️](cpp%2F0169-majority-element.cpp)
| [✔️](csharp%2F0169-majority-element.cs)
| [✔️](dart%2F0169-majority-element.dart)
| [✔️](go%2F0169-majority-element.go)
| ❌
| [✔️](java%2F0169-majority-element.java)
| [✔️](javascript%2F0169-majority-element.js)
| [✔️](kotlin%2F0169-majority-element.kt)
| [✔️](python%2F0169-majority-element.py)
| ❌
| [✔️](rust%2F0169-majority-element.rs)
| ❌
| [✔️](swift%2F0169-majority-element.swift)
| [✔️](typescript%2F0169-majority-element.ts)
+[0496 - Next Greater Element I](https://leetcode.com/problems/next-greater-element-i/) | ❌
| [✔️](c%2F0496-next-greater-element-i.c)
| [✔️](cpp%2F0496-next-greater-element-i.cpp)
| [✔️](csharp%2F0496-next-greater-element-i.cs)
| ❌
| [✔️](go%2F0496-next-greater-element-i.go)
| ❌
| [✔️](java%2F0496-next-greater-element-i.java)
| [✔️](javascript%2F0496-next-greater-element-i.js)
| [✔️](kotlin%2F0496-next-greater-element-i.kt)
| [✔️](python%2F0496-next-greater-element-i.py)
| ❌
| [✔️](rust%2F0496-next-greater-element-I.rs)
| ❌
| ❌
| [✔️](typescript%2F0496-next-greater-element-i.ts)
+[0724 - Find Pivot Index](https://leetcode.com/problems/find-pivot-index/) | ❌
| [✔️](c%2F0724-find-pivot-index.c)
| [✔️](cpp%2F0724-find-pivot-index.cpp)
| [✔️](csharp%2F0724-find-pivot-index.cs)
| ❌
| [✔️](go%2F0724-find-pivot-index.go)
| ❌
| [✔️](java%2F0724-find-pivot-index.java)
| [✔️](javascript%2F0724-find-pivot-index.js)
| [✔️](kotlin%2F0724-find-pivot-index.kt)
| [✔️](python%2F0724-find-pivot-index.py)
| ❌
| [✔️](rust%2F0724-find-pivot-index.rs)
| ❌
| [✔️](swift%2F0724-find-pivot-index.swift)
| [✔️](typescript%2F0724-find-pivot-index.ts)
+[0303 - Range Sum Query - Immutable](https://leetcode.com/problems/range-sum-query-immutable/) | ❌
| [✔️](c%2F0303-range-sum-query-immutable.c)
| [✔️](cpp%2F0303-range-sum-query-immutable.cpp)
| [✔️](csharp%2F0303-range-sum-query-immutable.cs)
| ❌
| [✔️](go%2F0303-range-sum-query.go)
| ❌
| [✔️](java%2F0303-range-sum-query-immutable.java)
| [✔️](javascript%2F0303-range-sum-query-immutable.js)
| [✔️](kotlin%2F0303-range-sum-query-immutable.kt)
| [✔️](python%2F0303-range-sum-query-immutable.py)
| ❌
| [✔️](rust%2F0303-range-sum-query-immutable.rs)
| ❌
| [✔️](swift%2F0303-range-sum-query-immutable.swift)
| [✔️](typescript%2F0303-range-sum-query-immutable.ts)
+[0448 - Find All Numbers Disappeared in An Array](https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/) | ❌
| [✔️](c%2F0448-Find-All-Numbers-Disappeared-in-an-Array.c)
| [✔️](cpp%2F0448-find-all-numbers-disappeared-in-an-array.cpp)
| [✔️](csharp%2F0448-find-all-numbers-disappeared-in-an-array.cs)
| ❌
| [✔️](go%2F0448-find-all-numbers-disappeared-in-an-array.go)
| ❌
| [✔️](java%2F0448-find-all-numbers-disappeared-in-an-array.java)
| [✔️](javascript%2F0448-find-all-numbers-disappeared-in-an-array.js)
| [✔️](kotlin%2F0448-find-all-numbers-disappeared-in-an-array.kt)
| [✔️](python%2F0448-find-all-numbers-disappeared-in-an-array.py)
| ❌
| [✔️](rust%2F0448-find-all-numbers-disappeared-in-an-array.rs)
| ❌
| ❌
| [✔️](typescript%2F0448-find-all-numbers-disappeared-in-an-array.ts)
+[1189 - Maximum Number of Balloons](https://leetcode.com/problems/maximum-number-of-balloons/) | ❌
| [✔️](c%2F1189-Maximum-Number-of-Balloons.c)
| [✔️](cpp%2F1189-maximum-number-of-balloons.cpp)
| [✔️](csharp%2F1189-maximum-number-of-balloons.cs)
| ❌
| [✔️](go%2F1189-maximum-number-of-balloons.go)
| ❌
| [✔️](java%2F1189-maximum-number-of-balloons.java)
| [✔️](javascript%2F1189-maximum-number-of-balloons.js)
| [✔️](kotlin%2F1189-maximum-number-of-balloons.kt)
| [✔️](python%2F1189-maximum-number-of-balloons.py)
| ❌
| [✔️](rust%2F1189-maximum-number-of-balloons.rs)
| ❌
| ❌
| [✔️](typescript%2F1189-maximum-number-of-balloons.ts)
+[0290 - Word Pattern](https://leetcode.com/problems/word-pattern/) | ❌
| [✔️](c%2F0290-Word-Pattern.c)
| [✔️](cpp%2F0290-word-pattern.cpp)
| [✔️](csharp%2F0290-word-pattern.cs)
| ❌
| [✔️](go%2F0290-word-pattern.go)
| ❌
| [✔️](java%2F0290-word-pattern.java)
| [✔️](javascript%2F0290-word-pattern.js)
| [✔️](kotlin%2F0290-word-pattern.kt)
| [✔️](python%2F0290-word-pattern.py)
| ❌
| [✔️](rust%2F0290-word-pattern.rs)
| ❌
| ❌
| [✔️](typescript%2F0290-word-pattern.ts)
+[0705 - Design HashSet](https://leetcode.com/problems/design-hashset/) | ❌
| [✔️](c%2F0705-design-hashset.c)
| [✔️](cpp%2F0705-design-hashset.cpp)
| [✔️](csharp%2F0705-design-hashset.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0705-design-hashset.java)
| [✔️](javascript%2F0705-design-hashset.js)
| [✔️](kotlin%2F0705-design-hashset.kt)
| [✔️](python%2F0705-design-hashset.py)
| ❌
| [✔️](rust%2F0705-design-hashset.rs)
| ❌
| [✔️](swift%2F0705-design-hashset.swift)
| [✔️](typescript%2F0705-design-hashset.ts)
+[0706 - Design HashMap](https://leetcode.com/problems/design-hashmap/) | ❌
| [✔️](c%2F0706-design-hashmap.c)
| [✔️](cpp%2F0706-design-hashmap.cpp)
| [✔️](csharp%2F0706-design-hashmap.cs)
| ❌
| [✔️](go%2F0706-design-hashmap.go)
| ❌
| [✔️](java%2F0706-design-hashmap.java)
| [✔️](javascript%2F0706-design-hashmap.js)
| [✔️](kotlin%2F0706-design-hashmap.kt)
| [✔️](python%2F0706-design-hashmap.py)
| ❌
| [✔️](rust%2F0706-design-hashmap.rs)
| ❌
| [✔️](swift%2F0706-design-hashmap.swift)
| ❌
+[0912 - Sort an Array](https://leetcode.com/problems/sort-an-array/) | ❌
| [✔️](c%2F0912-sort-an-array.c)
| [✔️](cpp%2F0912-sort-an-array.cpp)
| [✔️](csharp%2F0912-sort-an-array.cs)
| ❌
| [✔️](go%2F0912-sort-an-array.go)
| ❌
| [✔️](java%2F0912-sort-an-array.java)
| [✔️](javascript%2F0912-sort-an-array.js)
| [✔️](kotlin%2F0912-sort-an-array.kt)
| [✔️](python%2F0912-sort-an-array.py)
| ❌
| [✔️](rust%2F0912-sort-an-array.rs)
| ❌
| [✔️](swift%2F0912-sort-an-array.swift)
| ❌
+[0347 - Top K Frequent Elements](https://leetcode.com/problems/top-k-frequent-elements/) | ❌
| [✔️](c%2F0347-top-k-frequent-elements.c)
| [✔️](cpp%2F0347-top-k-frequent-elements.cpp)
| [✔️](csharp%2F0347-top-k-frequent-elements.cs)
| [✔️](dart%2F0347-top-k-frequent-elements.dart)
| [✔️](go%2F0347-top-k-frequent-elements.go)
| ❌
| [✔️](java%2F0347-top-k-frequent-elements.java)
| [✔️](javascript%2F0347-top-k-frequent-elements.js)
| [✔️](kotlin%2F0347-top-k-frequent-elements.kt)
| [✔️](python%2F0347-top-k-frequent-elements.py)
| [✔️](ruby%2F0347-top-k-frequent-elements.rb)
| [✔️](rust%2F0347-top-k-frequent-elements.rs)
| [✔️](scala%2F0347-top-k-frequent-elements.scala)
| [✔️](swift%2F0347-top-k-frequent-elements.swift)
| [✔️](typescript%2F0347-top-k-frequent-elements.ts)
+[0238 - Product of Array Except Self](https://leetcode.com/problems/product-of-array-except-self/) | ❌
| [✔️](c%2F0238-product-of-array-except-self.c)
| [✔️](cpp%2F0238-product-of-array-except-self.cpp)
| [✔️](csharp%2F0238-product-of-array-except-self.cs)
| ❌
| [✔️](go%2F0238-product-of-array-except-self.go)
| ❌
| [✔️](java%2F0238-product-of-array-except-self.java)
| [✔️](javascript%2F0238-product-of-array-except-self.js)
| [✔️](kotlin%2F0238-product-of-array-except-self.kt)
| [✔️](python%2F0238-product-of-array-except-self.py)
| [✔️](ruby%2F0238-product-of-array-except-self.rb)
| [✔️](rust%2F0238-product-of-array-except-self.rs)
| ❌
| [✔️](swift%2F0238-product-of-array-except-self.swift)
| [✔️](typescript%2F0238-product-of-array-except-self.ts)
+[0036 - Valid Sudoku](https://leetcode.com/problems/valid-sudoku/) | ❌
| [✔️](c%2F0036-valid-sudoku.c)
| [✔️](cpp%2F0036-valid-sudoku.cpp)
| [✔️](csharp%2F0036-valid-sudoku.cs)
| [✔️](dart%2F0036-valid-sudoku.dart)
| [✔️](go%2F0036-valid-sudoku.go)
| ❌
| [✔️](java%2F0036-valid-sudoku.java)
| [✔️](javascript%2F0036-valid-sudoku.js)
| [✔️](kotlin%2F0036-valid-sudoku.kt)
| [✔️](python%2F0036-valid-sudoku.py)
| [✔️](ruby%2F0036-valid-sudoku.rb)
| [✔️](rust%2F0036-valid-sudoku.rs)
| [✔️](scala%2F0036-valid-sudoku.scala)
| ❌
| [✔️](typescript%2F0036-valid-sudoku.ts)
+[0271 - Encode and Decode Strings](https://leetcode.com/problems/encode-and-decode-strings/) | ❌
| ❌
| [✔️](cpp%2F0271-encode-and-decode-strings.cpp)
| [✔️](csharp%2F0271-encode-and-decode-strings.cs)
| ❌
| [✔️](go%2F0271-encode-and-decode-strings.go)
| ❌
| [✔️](java%2F0271-encode-and-decode-strings.java)
| [✔️](javascript%2F0271-encode-and-decode-strings.js)
| [✔️](kotlin%2F0271-encode-and-decode-strings.kt)
| [✔️](python%2F0271-encode-and-decode-strings.py)
| [✔️](ruby%2F0271-encode-and-decode-strings.rb)
| [✔️](rust%2F0271-encode-and-decode-strings.rs)
| ❌
| [✔️](swift%2F0271-encode-and-decode-strings.swift)
| [✔️](typescript%2F0271-encode-and-decode-strings.ts)
+[0128 - Longest Consecutive Sequence](https://leetcode.com/problems/longest-consecutive-sequence/) | ❌
| [✔️](c%2F0128-longest-consecutive-sequence.c)
| [✔️](cpp%2F0128-longest-consecutive-sequence.cpp)
| [✔️](csharp%2F0128-longest-consecutive-sequence.cs)
| ❌
| [✔️](go%2F0128-longest-consecutive-sequence.go)
| ❌
| [✔️](java%2F0128-longest-consecutive-sequence.java)
| [✔️](javascript%2F0128-longest-consecutive-sequence.js)
| [✔️](kotlin%2F0128-longest-consecutive-sequence.kt)
| [✔️](python%2F0128-longest-consecutive-sequence.py)
| [✔️](ruby%2F0128-longest-consecutive-sequence.rb)
| [✔️](rust%2F0128-longest-consecutive-sequence.rs)
| ❌
| [✔️](swift%2F0128-longest-consecutive-sequence.swift)
| [✔️](typescript%2F0128-longest-consecutive-sequence.ts)
+[0075 - Sort Colors](https://leetcode.com/problems/sort-colors/) | ❌
| [✔️](c%2F0075-sort-colors.c)
| [✔️](cpp%2F0075-Sort-colors.cpp)
| [✔️](csharp%2F0075-sort-colors.cs)
| ❌
| [✔️](go%2F0075-sort-colors.go)
| ❌
| [✔️](java%2F0075-sort-colors.java)
| [✔️](javascript%2F0075-sort-colors.js)
| [✔️](kotlin%2F0075-sort-colors.kt)
| [✔️](python%2F0075-sort-colors.py)
| ❌
| [✔️](rust%2F0075-sort-colors.rs)
| ❌
| [✔️](swift%2F0075-sort-colors.swift)
| [✔️](typescript%2F0075-sort-colors.ts)
+[0535 - Encode and Decode TinyURL](https://leetcode.com/problems/encode-and-decode-tinyurl/) | ❌
| [✔️](c%2F0535-encode-and-decode-tinyurl.c)
| [✔️](cpp%2F0535-encode-and-decode-tinyurl.cpp)
| [✔️](csharp%2F0535-encode-and-decode-tinyurl.cs)
| ❌
| [✔️](go%2F0535-encode-and-decode-tinyurl.go)
| ❌
| [✔️](java%2F0535-encode-and-decode-tinyurl.java)
| [✔️](javascript%2F0535-encode-and-decode-tinyurl.js)
| [✔️](kotlin%2F0535-encode-and-decode-tinyurl.kt)
| [✔️](python%2F0535-encode-and-decode-tinyurl.py)
| ❌
| [✔️](rust%2F0535-encode-and-decode-tinyURL.rs)
| ❌
| [✔️](swift%2F0535-Encode-and-Decode-TinyURL.Swift)
| [✔️](typescript%2F0535-encode-and-decode-tinyurl.ts)
+[0554 - Brick Wall](https://leetcode.com/problems/brick-wall/) | ❌
| [✔️](c%2F0554-Brick-Wall.c)
| [✔️](cpp%2F0554-brick-wall.cpp)
| [✔️](csharp%2F0554-brick-wall.cs)
| ❌
| [✔️](go%2F0554-brick-wall.go)
| ❌
| [✔️](java%2F0554-brick-wall.java)
| [✔️](javascript%2F0554-brick-wall.js)
| [✔️](kotlin%2F0554-brick-wall.kt)
| [✔️](python%2F0554-brick-wall.py)
| ❌
| [✔️](rust%2F0554-brick-wall.rs)
| ❌
| ❌
| [✔️](typescript%2F0554-brick-wall.ts)
+[0122 - Best Time to Buy And Sell Stock II](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/) | ❌
| [✔️](c%2F0122-best-time-to-buy-and-sell-stock-ii.c)
| [✔️](cpp%2F0122-best-time-to-buy-and-sell-stock-ii.cpp)
| ❌
| ❌
| [✔️](go%2F0122-best-time-to-buy-and-sell-stock-ii.go)
| ❌
| [✔️](java%2F0122-best-time-to-buy-and-sell-stock-II.java)
| [✔️](javascript%2F0122-best-time-to-buy-and-sell-stock-ii.js)
| [✔️](kotlin%2F0122-best-time-to-buy-and-sell-stock-ii.kt)
| [✔️](python%2F0122-best-time-to-buy-and-sell-stock-ii.py)
| ❌
| [✔️](rust%2F0122-best-time-to-buy-and-sell-stock-ii.rs)
| ❌
| ❌
| ❌
+[0560 - Subarray Sum Equals K](https://leetcode.com/problems/subarray-sum-equals-k/) | ❌
| [✔️](c%2F0560-subarray-sum-equals-k.c)
| [✔️](cpp%2F0560-subarray-sum-equals-k.cpp)
| [✔️](csharp%2F0560-subarray-sum-equals-k.cs)
| ❌
| [✔️](go%2F0560-subarray-sum-equals-k.go)
| ❌
| [✔️](java%2F0560-subarray-sum-equals-k.java)
| [✔️](javascript%2F0560-subarray-sum-equals-k.js)
| [✔️](kotlin%2F0560-subarray-sum-equals-k.kt)
| [✔️](python%2F0560-subarray-sum-equals-k.py)
| ❌
| [✔️](rust%2F0560-subarray-sum-equals-k.rs)
| ❌
| [✔️](swift%2F0560-subarray-sum-equals-k.swift)
| [✔️](typescript%2F0560-subarray-sum-equals-k.ts)
+[1930 - Unique Length 3 Palindromic Subsequences](https://leetcode.com/problems/unique-length-3-palindromic-subsequences/) | ❌
| [✔️](c%2F1930-unique-length-3-palindromic-subsequences.c)
| [✔️](cpp%2F1930-unique-length-3-palindromic-subsequences.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1930-unique-length-3-palindromic-subsequences.java)
| [✔️](javascript%2F1930-unique-length-3-palindromic-subsequences.js)
| [✔️](kotlin%2F1930-unique-length-3-palindromic-subsequences.kt)
| [✔️](python%2F1930-unique-length-3-palindromic-subsequences.py)
| ❌
| [✔️](rust%2F1930-unique-length-3-palindromic-subsequences.rs)
| ❌
| ❌
| [✔️](typescript%2F1930-unique-length-3-palindromic-subsequences.ts)
+[1963 - Minimum Number of Swaps to Make The String Balanced](https://leetcode.com/problems/minimum-number-of-swaps-to-make-the-string-balanced/) | ❌
| [✔️](c%2F1963-minimum-number-of-swaps-to-make-the-string-balanced.c)
| [✔️](cpp%2F1963-minimum-number-of-swaps-to-make-the-string-balanced.cpp)
| [✔️](csharp%2F1963-minimum-number-of-swaps-to-make-the-string-balanced.cs)
| ❌
| [✔️](go%2F1963-minimum-number-of-swaps-to-make-the-string-balanced.go)
| ❌
| [✔️](java%2F1963-minimum-number-of-swaps-to-make-the-string-balanced.java)
| [✔️](javascript%2F1963-minimum-number-of-swaps-to-make-the-string-balanced.js)
| [✔️](kotlin%2F1963-minimum-number-of-swaps-to-make-the-string-balanced.kt)
| [✔️](python%2F1963-minimum-number-of-swaps-to-make-the-string-balanced.py)
| ❌
| [✔️](rust%2F1963-minimum-number-of-swaps-to-make-the-string-balanced.rs)
| ❌
| ❌
| ❌
+[2001 - Number of Pairs of Interchangeable Rectangles](https://leetcode.com/problems/number-of-pairs-of-interchangeable-rectangles/) | ❌
| [✔️](c%2F2001-number-of-pairs-of-interchangeable-rectangles.c)
| [✔️](cpp%2F2001-number-of-pairs-of-interchangeable-rectangles.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F2001-number-of-pairs-of-interchangeable-rectangles.java)
| [✔️](javascript%2F2001-number-of-pairs-of-interchangeable-rectangles.js)
| [✔️](kotlin%2F2001-number-of-pairs-of-interchangeable-rectangles.kt)
| [✔️](python%2F2001-number-of-pairs-of-interchangeable-rectangles.py)
| ❌
| [✔️](rust%2F2001-number-of-pairs-of-interchangeable-rectangles.rs)
| ❌
| ❌
| ❌
+[2002 - Maximum Product of The Length of Two Palindromic Subsequences](https://leetcode.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/) | ❌
| [✔️](c%2F2002-maximum-product-of-the-length-of-two-palindromic-subsequences.c)
| [✔️](cpp%2F2002-maximum-product-of-the-length-of-two-palindromic-subsequences.cpp)
| [✔️](csharp%2F2002-maximum-product-of-the-length-of-two-palindromic-subsequences.cs)
| ❌
| [✔️](go%2F2002-maximum-product-of-the-length-of-two-palindromic-subsequences.go)
| ❌
| [✔️](java%2F2002-maximum-product-of-the-length-of-two-palindromic-subsequences.java)
| [✔️](javascript%2F2002-maximum-product-of-the-length-of-two-palindromic-subsequences.js)
| [✔️](kotlin%2F2002-maximum-product-of-the-length-of-two-palindromic-subsequences.kt)
| [✔️](python%2F2002-maximum-product-of-the-length-of-two-palindromic-subsequences.py)
| ❌
| [✔️](rust%2F2002-maximum-product-of-the-length-of-two-palindromic-subsequences.rs)
| ❌
| ❌
| [✔️](typescript%2F2002-maximum-product-of-the-length-of-two-palindromic-subsequences.ts)
+[2017 - Grid Game](https://leetcode.com/problems/grid-game/) | ❌
| ❌
| [✔️](cpp%2F2017-grid-game.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F2017-grid-game.java)
| [✔️](javascript%2F2017-grid-game.js)
| [✔️](kotlin%2F2017-grid-game.kt)
| [✔️](python%2F2017-grid-game.py)
| ❌
| [✔️](rust%2F2017-grid-game.rs)
| ❌
| ❌
| ❌
+[0438 - Find All Anagrams in a String](https://leetcode.com/problems/find-all-anagrams-in-a-string/) | ❌
| [✔️](c%2F0438-find-all-anagrams-in-a-string.c)
| [✔️](cpp%2F0438-find-all-anagrams-in-a-string.cpp)
| [✔️](csharp%2F0438-find-all-anagrams-in-a-string.cs)
| ❌
| [✔️](go%2F0438-find-all-anagrams-in-a-string.go)
| ❌
| [✔️](java%2F0438-find-all-anagrams-in-a-string.java)
| [✔️](javascript%2F0438-find-all-anagrams-in-a-string.js)
| [✔️](kotlin%2F0438-find-all-anagrams-in-a-string.kt)
| [✔️](python%2F0438-find-all-anagrams-in-a-string.py)
| ❌
| [✔️](rust%2F0438-find-all-anagrams-in-a-string.rs)
| ❌
| ❌
| [✔️](typescript%2F0438-find-all-anagrams-in-a-string.ts)
+[0028 - Find The Index of The First Occurrence in a String](https://leetcode.com/problems/find-the-index-of-the-first-occurrence-in-a-string/) | ❌
| [✔️](c%2F0028-find-the-index-of-the-first-occurrence-in-a-string.c)
| [✔️](cpp%2F0028-find-the-index-of-the-first-occurrence-in-a-string.cpp)
| [✔️](csharp%2F0028-find-the-index-of-the-first-occurrence-in-a-string.cs)
| [✔️](dart%2F0028-find-the-index-of-the-first-occurrence-in-a-string.dart)
| [✔️](go%2F0028-find-the-index-of-the-first-occurrence-in-a-string.go)
| ❌
| [✔️](java%2F0028-find-the-index-of-the-first-occurrence-in-a-string.java)
| [✔️](javascript%2F0028-find-the-index-of-the-first-occurrence-in-a-string.js)
| [✔️](kotlin%2F0028-find-the-index-of-the-first-occurrence-in-a-string.kt)
| [✔️](python%2F0028-find-the-index-of-the-first-occurrence-in-a-string.py)
| ❌
| [✔️](rust%2F0028-find-the-index-of-the-first-occurrence-in-a-string.rs)
| ❌
| ❌
| ❌
+[0280 - Wiggle Sort](https://leetcode.com/problems/wiggle-sort/) | ❌
| ❌
| [✔️](cpp%2F0280-wiggle-sort.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0280-wiggle-sort.java)
| ❌
| [✔️](kotlin%2F0280-wiggle-sort.kt)
| [✔️](python%2F0280-wiggle-sort.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0179 - Largest Number](https://leetcode.com/problems/largest-number/) | ❌
| [✔️](c%2F0179-largest-number.c)
| [✔️](cpp%2F0179-largest-number.cpp)
| [✔️](csharp%2F0179-largest-number.cs)
| ❌
| [✔️](go%2F0179-largest-number.go)
| ❌
| [✔️](java%2F0179-largest-number.java)
| [✔️](javascript%2F0179-largest-number.js)
| [✔️](kotlin%2F0179-largest-number.kt)
| [✔️](python%2F0179-largest-number.py)
| [✔️](ruby%2F0179-largest-number.rb)
| [✔️](rust%2F0179-largest-number.rs)
| [✔️](scala%2F0179-largest-number.scala)
| [✔️](swift%2F0179-largest-number.swift)
| [✔️](typescript%2F0179-largest-number.ts)
+[0523 - Continuous Subarray Sum](https://leetcode.com/problems/continuous-subarray-sum/) | ❌
| [✔️](c%2F0523-continuous-subarray-sum.c)
| [✔️](cpp%2F0523-continuous-subarray-sum.cpp)
| [✔️](csharp%2F0523-continuous-subarray-sum.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0523-continuous-subarray-sum.java)
| [✔️](javascript%2F0523-continuous-subarray-sum.js)
| [✔️](kotlin%2F0523-continuous-subarray-sum.kt)
| [✔️](python%2F0523-continuous-subarray-sum.py)
| ❌
| [✔️](rust%2F0523-continuous-subarray-sum.rs)
| ❌
| ❌
| ❌
+[0838 - Push Dominoes](https://leetcode.com/problems/push-dominoes/) | ❌
| ❌
| [✔️](cpp%2F0838-push-dominoes.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0838-push-dominoes.java)
| [✔️](javascript%2F0838-push-dominoes.js)
| [✔️](kotlin%2F0838-push-dominoes.kt)
| [✔️](python%2F0838-push-dominoes.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F0838-push-dominoes.ts)
+[0187 - Repeated DNA Sequences](https://leetcode.com/problems/repeated-dna-sequences/) | ❌
| ❌
| [✔️](cpp%2F0187-repeated-dna-sequences.cpp)
| [✔️](csharp%2F0187-repeated-dna-sequences.cs)
| ❌
| [✔️](go%2F0187-repeated-dna-sequences.go)
| ❌
| [✔️](java%2F0187-repeated-dna-sequences.java)
| [✔️](javascript%2F0187-repeated-dna-sequences.js)
| [✔️](kotlin%2F0187-repeated-dna-sequences.kt)
| [✔️](python%2F0187-repeated-dna-sequences.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F0187-repeated-dna-sequences.ts)
+[0380 - Insert Delete Get Random O(1)](https://leetcode.com/problems/insert-delete-getrandom-o1/) | ❌
| ❌
| [✔️](cpp%2F0380-insert-delete-getrandom-o1.cpp)
| ❌
| ❌
| [✔️](go%2F0380-insert-delete-getrandom-o1.go)
| ❌
| [✔️](java%2F0380-insert-delete-getrandom-o1.java)
| [✔️](javascript%2F0380-insert-delete-getrandom-o1.js)
| [✔️](kotlin%2F0380-insert-delete-getrandom-o1.kt)
| [✔️](python%2F0380-insert-delete-getrandom-o1.py)
| ❌
| [✔️](rust%2F0380-insert-delete-getrandom-o1.rs)
| ❌
| [✔️](swift%2F0380-insert-delete-getrandom-o1.swift)
| [✔️](typescript%2F0380-insert-delete-getrandom-o1.ts)
+[1461 - Check if a String Contains all Binary Codes of Size K](https://leetcode.com/problems/check-if-a-string-contains-all-binary-codes-of-size-k/) | ❌
| ❌
| [✔️](cpp%2F1461-check-if-a-string-contains-all-binary-codes-of-size-k.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1461-check-if-a-string-contains-all-binary-codes-of-size-k.java)
| [✔️](javascript%2F1461-check-if-a-string-contains-all-binary-codes-of-size-k.js)
| [✔️](kotlin%2F1461-check-if-a-string-contains-all-binary-codes-of-size-k.kt)
| [✔️](python%2F1461-check-if-a-string-contains-all-binary-codes-of-size-k.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0304 - Range Sum Query 2D Immutable](https://leetcode.com/problems/range-sum-query-2d-immutable/) | ❌
| ❌
| [✔️](cpp%2F0304-range-sum-query-2d-immutable.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0304-range-sum-query-2d-immutable.java)
| [✔️](javascript%2F0304-range-sum-query-2d-immutable.js)
| [✔️](kotlin%2F0304-range-sum-query-2d-immutable.kt)
| [✔️](python%2F0304-range-sum-query-2d-immutable.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0304-range-sum-query-2d-immutable.swift)
| ❌
+[0665 - Non Decreasing Array](https://leetcode.com/problems/non-decreasing-array/) | ❌
| [✔️](c%2F0665-non-decreasing-array.c)
| [✔️](cpp%2F0665-non-decreasing-array.cpp)
| [✔️](csharp%2F0665-non-decreasing-array.cs)
| ❌
| [✔️](go%2F0665-non-decreasing-array.go)
| ❌
| [✔️](java%2F0665-non-decreasing-array.java)
| [✔️](javascript%2F0665-non-decreasing-array.js)
| [✔️](kotlin%2F0665-non-decreasing-array.kt)
| [✔️](python%2F0665-non-decreasing-array.py)
| ❌
| ❌
| [✔️](scala%2F0665-non-decreasing-array.scala)
| ❌
| [✔️](typescript%2F0665-non-decreasing-array.ts)
+[0041 - First Missing Positive](https://leetcode.com/problems/first-missing-positive/) | ❌
| [✔️](c%2F0041-first-missing-positive.c)
| [✔️](cpp%2F0041-first-missing-positive.cpp)
| ❌
| ❌
| [✔️](go%2F0041-first-missing-positive.go)
| ❌
| [✔️](java%2F0041-first-missing-positive.java)
| [✔️](javascript%2F0041-first-missing-positive.js)
| [✔️](kotlin%2F0041-first-missing-positive.kt)
| [✔️](python%2F0041-first-missing-positive.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F0041-first-missing-positive.ts)
+[1822 - Sign of An Array](https://leetcode.com/problems/sign-of-the-product-of-an-array/) | ❌
| [✔️](c%2F1822-sign-of-the-product-of-an-array.c)
| [✔️](cpp%2F1822-sign-of-the-product-of-an-array.cpp)
| ❌
| ❌
| [✔️](go%2F1822-sign-of-the-product-of-an-array.go)
| ❌
| [✔️](java%2F1822-sign-of-the-product-of-an-array.java)
| [✔️](javascript%2F1822-sign-of-the-product-of-an-array.js)
| [✔️](kotlin%2F1822-sign-of-the-product-of-an-array.kt)
| [✔️](python%2F1822-sign-of-the-product-of-an-array.py)
| ❌
| [✔️](rust%2F1822-sign-of-the-product-of-an-array.rs)
| ❌
| ❌
| [✔️](typescript%2F1822-sign-of-the-product-of-an-array.ts)
+[2215 - Find the Difference of Two Arrays](https://leetcode.com/problems/find-the-difference-of-two-arrays/) | ❌
| [✔️](c%2F2215-find-the-difference-of-two-arrays.c)
| [✔️](cpp%2F2215-find-the-difference-of-two-arrays.cpp)
| [✔️](csharp%2F2215-find-the-difference-of-two-arrays.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F2215-find-the-difference-of-two-arrays.java)
| [✔️](javascript%2F2215-find-the-difference-of-two-arrays.js)
| [✔️](kotlin%2F2215-find-the-difference-of-two-arrays.kt)
| [✔️](python%2F2215-find-the-difference-of-two-arrays.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F2215-find-the-difference-of-two-arrays.ts)
+[1603 - Design Parking System](https://leetcode.com/problems/design-parking-system/) | ❌
| ❌
| [✔️](cpp%2F1603-design-parking-system.cpp)
| [✔️](csharp%2F1603-design-parking-system.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F1603-design-parking-system.java)
| [✔️](javascript%2F1603-design-parking-system.js)
| [✔️](kotlin%2F1603-design-parking-system.kt)
| [✔️](python%2F1603-design-parking-system.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[2348 - Number of Zero-Filled Subarrays](https://leetcode.com/problems/number-of-zero-filled-subarrays/) | ❌
| ❌
| [✔️](cpp%2F2348-number-of-zero-filled-subarrays.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F2348-number-of-zero-filled-subarrays.java)
| [✔️](javascript%2F2348-number-of-zero-filled-subarrays.js)
| [✔️](kotlin%2F2348-number-of-zero-filled-subarrays.kt)
| [✔️](python%2F2348-number-of-zero-filled-subarrays.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[2405 - Optimal Partition of String](https://leetcode.com/problems/optimal-partition-of-string/) | ❌
| ❌
| [✔️](cpp%2F2405-optimal-partition-of-string.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F2405-optimal-partition-of-string.java)
| ❌
| [✔️](kotlin%2F2405-optimal-partition-of-string.kt)
| [✔️](python%2F2405-optimal-partition-of-string.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1396 - Design Underground System](https://leetcode.com/problems/design-underground-system/) | ❌
| ❌
| ❌
| [✔️](csharp%2F1396-design-underground-system.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F1396-design-underground-system.java)
| [✔️](javascript%2F1396-design-underground-system.js)
| [✔️](kotlin%2F1396-design-underground-system.kt)
| [✔️](python%2F1396-design-underground-system.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[2483 - Minimum Penalty for a Shop](https://leetcode.com/problems/minimum-penalty-for-a-shop/) | ❌
| ❌
| [✔️](cpp%2F2483-minimum-penalty-for-a-shop.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F2483-minimum-penalty-for-a-shop.java)
| ❌
| [✔️](kotlin%2F2483-minimum-penalty-for-a-shop.kt)
| [✔️](python%2F2483-minimum-penalty-for-a-shop.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0068 - Text Justification](https://leetcode.com/problems/text-justification/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0068-text-justification.java)
| ❌
| [✔️](kotlin%2F0068-text-justification.kt)
| [✔️](python%2F0068-text-justification.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[2306 - Naming a Company](https://leetcode.com/problems/naming-a-company/) | ❌
| ❌
| [✔️](cpp%2F2306-naming-a-company.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F2306-naming-a-company.java)
| [✔️](javascript%2F2306-naming-a-company.js)
| [✔️](kotlin%2F2306-naming-a-company.kt)
| [✔️](python%2F2306-naming-a-company.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+
+### Two Pointers
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0125 - Valid Palindrome](https://leetcode.com/problems/valid-palindrome/) | ❌
| [✔️](c%2F0125-valid-palindrome.c)
| [✔️](cpp%2F0125-valid-palindrome.cpp)
| [✔️](csharp%2F0125-valid-palindrome.cs)
| [✔️](dart%2F0125-valid-palindrome.dart)
| [✔️](go%2F0125-valid-palindrome.go)
| ❌
| [✔️](java%2F0125-valid-palindrome.java)
| [✔️](javascript%2F0125-valid-palindrome.js)
| [✔️](kotlin%2F0125-valid-palindrome.kt)
| [✔️](python%2F0125-valid-palindrome.py)
| [✔️](ruby%2F0125-valid-palindrome.rb)
| [✔️](rust%2F0125-valid-palindrome.rs)
| [✔️](scala%2F0125-valid-palindrome.scala)
| [✔️](swift%2F0125-valid-palindrome.swift)
| [✔️](typescript%2F0125-valid-palindrome.ts)
+[0680 - Valid Palindrome II](https://leetcode.com/problems/valid-palindrome-ii/) | ❌
| [✔️](c%2F0680-valid-palindrome-ii.c)
| [✔️](cpp%2F0680-valid-palindrome-ii.cpp)
| [✔️](csharp%2F0680-valid-palindrome-ii.cs)
| ❌
| [✔️](go%2F0680-valid-palindrome-ii.go)
| ❌
| [✔️](java%2F0680-valid-palindrome-ii.java)
| [✔️](javascript%2F0680-valid-palindrome-ii.js)
| [✔️](kotlin%2F0680-valid-palindrome-ii.kt)
| [✔️](python%2F0680-valid-palindrome-ii.py)
| ❌
| [✔️](rust%2F0680-valid-palindrome-II.rs)
| ❌
| ❌
| [✔️](typescript%2F0680-valid-palindrome-ii.ts)
+[1984 - Minimum Difference Between Highest And Lowest of K Scores](https://leetcode.com/problems/minimum-difference-between-highest-and-lowest-of-k-scores/) | ❌
| [✔️](c%2F1984-minimum-difference-between-highest-and-lowest-of-k-scores.c)
| [✔️](cpp%2F1984-minimum-difference-between-highest-and-lowest-of-k-scores.cpp)
| [✔️](csharp%2F1984-minimum-difference-between-highest-and-lowest-of-k-scores.cs)
| ❌
| [✔️](go%2F1984-minimum-difference-between-highest-and-lowest-of-k-scores.go)
| ❌
| [✔️](java%2F1984-minimum-difference-between-highest-and-lowest-of-k-scores.java)
| [✔️](javascript%2F1984-Minimum-Difference-Between-Highest-and-Lowest-of-K-Scores.js)
| [✔️](kotlin%2F1984-minimum-difference-between-highest-and-lowest-of-k-scores.kt)
| [✔️](python%2F1984-minimum-difference-between-highest-and-lowest-of-k-scores.py)
| ❌
| [✔️](rust%2F1984-minimum-difference-between-highest-and-lowest-of-k-scores.rs)
| ❌
| ❌
| [✔️](typescript%2F1984-minimum-difference-between-highest-and-lowest-of-k-scores.ts)
+[1768 - Merge Strings Alternately](https://leetcode.com/problems/merge-strings-alternately/) | ❌
| ❌
| [✔️](cpp%2F1768-merge-strings-alternately.cpp)
| [✔️](csharp%2F1768-merge-strings-alternately.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F1768-merge-strings-alternately.java)
| [✔️](javascript%2F1768-merge-strings-alternately.js)
| [✔️](kotlin%2F1768-merge-strings-alternately.kt)
| [✔️](python%2F1768-merge-strings-alternately.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F1768-merge-strings-alternately.ts)
+[0344 - Reverse String](https://leetcode.com/problems/reverse-string/) | ❌
| [✔️](c%2F0344-reverse-string.c)
| [✔️](cpp%2F0344-Reverse-String.cpp)
| [✔️](csharp%2F0344-reverse-string.cs)
| [✔️](dart%2F0344-reverse-string.dart)
| [✔️](go%2F0344-reverse-string.go)
| ❌
| [✔️](java%2F0344-reverse-string.java)
| [✔️](javascript%2F0344-reverse-string.js)
| [✔️](kotlin%2F0344-reverse-string.kt)
| [✔️](python%2F0344-reverse-string.py)
| ❌
| [✔️](rust%2F0344-reverse-string.rs)
| ❌
| [✔️](swift%2F0344-reverse-string.swift)
| [✔️](typescript%2F0344-reverse-string.ts)
+[0088 - Merge Sorted Array](https://leetcode.com/problems/merge-sorted-array/) | ❌
| [✔️](c%2F0088-merge-sorted-array.c)
| [✔️](cpp%2F0088-Merge-sorted-array.cpp)
| [✔️](csharp%2F0088-merge-sorted-array.cs)
| ❌
| [✔️](go%2F0088-merge-sorted-array.go)
| ❌
| [✔️](java%2F0088-merge-sorted-array.java)
| [✔️](javascript%2F0088-merge-sorted-array.js)
| [✔️](kotlin%2F0088-merge-sorted-array.kt)
| [✔️](python%2F0088-merge-sorted-array.py)
| ❌
| [✔️](rust%2F0088-merge-sorted-array.rs)
| ❌
| ❌
| [✔️](typescript%2F0088-merge-sorted-array.ts)
+[0283 - Move Zeroes](https://leetcode.com/problems/move-zeroes/) | ❌
| [✔️](c%2F0283-move-zeroes.c)
| [✔️](cpp%2F0283-move-zeroes.cpp)
| [✔️](csharp%2F0283-move-zeroes.cs)
| ❌
| [✔️](go%2F0283-move-zeroes.go)
| ❌
| [✔️](java%2F0283-move-zeroes.java)
| [✔️](javascript%2F0283-move-zeroes.js)
| [✔️](kotlin%2F0283-move-zeroes.kt)
| [✔️](python%2F0283-move-zeroes.py)
| ❌
| [✔️](rust%2F0283-move-zeroes.rs)
| ❌
| [✔️](swift%2F0283-Move-Zeroes.Swift)
| [✔️](typescript%2F0283-move-zeroes.ts)
+[0026 - Remove Duplicates From Sorted Array](https://leetcode.com/problems/remove-duplicates-from-sorted-array/) | ❌
| [✔️](c%2F0026-remove-duplicates-from-sorted-array.c)
| [✔️](cpp%2F0026-remove-duplicates-from-sorted-array.cpp)
| [✔️](csharp%2F0026-remove-duplicates-from-sorted-array.cs)
| ❌
| [✔️](go%2F0026-remove-duplicates-from-sorted-array.go)
| ❌
| [✔️](java%2F0026-remove-duplicates-from-sorted-array.java)
| [✔️](javascript%2F0026-remove-duplicates-from-sorted-array.js)
| [✔️](kotlin%2F0026-remove-duplicates-from-sorted-array.kt)
| [✔️](python%2F0026-remove-duplicates-from-sorted-array.py)
| ❌
| [✔️](rust%2F0026-remove-duplicates-from-sorted-array.rs)
| ❌
| [✔️](swift%2F0026-Remove-Duplicates-from-Sorted-Array.swift)
| [✔️](typescript%2F0026-remove-duplicates-from-sorted-array.ts)
+[0080 - Remove Duplicates From Sorted Array II](https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/) | ❌
| [✔️](c%2F0080-remove-duplicates-from-sorted-array-ii.c)
| [✔️](cpp%2F0080-remove-duplicates-from-sorted-array-ii.cpp)
| [✔️](csharp%2F0080-remove-duplicates-from-sorted-array-ii.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0080-remove-duplicates-from-sorted-array-ii.java)
| [✔️](javascript%2F0080-remove-duplicates-from-sorted-array-ii.js)
| [✔️](kotlin%2F0080-remove-duplicates-from-sorted-array-ii.kt)
| [✔️](python%2F0080-remove-duplicates-from-sorted-array-ii.py)
| ❌
| [✔️](rust%2F0080-remove-duplicates-from-sorted-array-ii.rs)
| ❌
| [✔️](swift%2F0080-remove-duplicates-from-sorted-array-ii.swift)
| ❌
+[0167 - Two Sum II Input Array Is Sorted](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/) | ❌
| [✔️](c%2F0167-two-sum-ii-input-array-is-sorted.c)
| [✔️](cpp%2F0167-two-sum-ii-input-array-is-sorted.cpp)
| [✔️](csharp%2F0167-two-sum-ii-input-array-is-sorted.cs)
| ❌
| [✔️](go%2F0167-two-sum-ii-input-array-is-sorted.go)
| ❌
| [✔️](java%2F0167-two-sum-ii-input-array-is-sorted.java)
| [✔️](javascript%2F0167-two-sum-ii-input-array-is-sorted.js)
| [✔️](kotlin%2F0167-two-sum-ii-input-array-is-sorted.kt)
| [✔️](python%2F0167-two-sum-ii-input-array-is-sorted.py)
| [✔️](ruby%2F0167-two-sum-ii-input-array-is-sorted.rb)
| [✔️](rust%2F0167-two-sum-ii-input-array-is-sorted.rs)
| [✔️](scala%2F0167-two-sum-ii-input-array-is-sorted.scala)
| [✔️](swift%2F0167-two-sum-ii-input-array-is-sorted.swift)
| [✔️](typescript%2F0167-two-sum-ii-input-array-is-sorted.ts)
+[0015 - 3Sum](https://leetcode.com/problems/3sum/) | ❌
| [✔️](c%2F0015-3sum.c)
| [✔️](cpp%2F0015-3sum.cpp)
| [✔️](csharp%2F0015-3sum.cs)
| [✔️](dart%2F0015-3sum.dart)
| [✔️](go%2F0015-3sum.go)
| ❌
| [✔️](java%2F0015-3sum.java)
| [✔️](javascript%2F0015-3sum.js)
| [✔️](kotlin%2F0015-3sum.kt)
| [✔️](python%2F0015-3sum.py)
| [✔️](ruby%2F0015-3sum.rb)
| [✔️](rust%2F0015-3sum.rs)
| [✔️](scala%2F0015-3sum.scala)
| [✔️](swift%2F0015-3sum.swift)
| [✔️](typescript%2F0015-3sum.ts)
+[0018 - 4Sum](https://leetcode.com/problems/4sum/) | ❌
| ❌
| [✔️](cpp%2F0018-4sum.cpp)
| ❌
| ❌
| [✔️](go%2F0018-4Sum.go)
| ❌
| [✔️](java%2F0018-4sum.java)
| [✔️](javascript%2F0018-4sum.js)
| [✔️](kotlin%2F0018-4sum.kt)
| [✔️](python%2F0018-4sum.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0018-4sum.swift)
| [✔️](typescript%2F0018-4sum.ts)
+[0011 - Container With Most Water](https://leetcode.com/problems/container-with-most-water/) | ❌
| [✔️](c%2F0011-container-with-most-water.c)
| [✔️](cpp%2F0011-container-with-most-water.cpp)
| [✔️](csharp%2F0011-container-with-most-water.cs)
| [✔️](dart%2F0011-container-with-most-water.dart)
| [✔️](go%2F0011-container-with-most-water.go)
| ❌
| [✔️](java%2F0011-container-with-most-water.java)
| [✔️](javascript%2F0011-container-with-most-water.js)
| [✔️](kotlin%2F0011-container-with-most-water.kt)
| [✔️](python%2F0011-container-with-most-water.py)
| [✔️](ruby%2F0011-container-with-most-water.rb)
| [✔️](rust%2F0011-container-with-most-water.rs)
| [✔️](scala%2F0011-container-with-most-water.scala)
| [✔️](swift%2F0011-container-with-most-water.swift)
| [✔️](typescript%2F0011-container-with-most-water.ts)
+[1498 - Number of Subsequences That Satisfy The Given Sum Condition](https://leetcode.com/problems/number-of-subsequences-that-satisfy-the-given-sum-condition/) | ❌
| ❌
| [✔️](cpp%2F1498-number-of-subsequences-that-satisfy-the-given-sum-condition.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1498-number-of-subsequences-that-satisfy-the-given-sum-condition.java)
| ❌
| [✔️](kotlin%2F1498-number-of-subsequences-that-satisfy-the-given-sum-condition.kt)
| [✔️](python%2F1498-number-of-subsequences-that-satisfy-the-given-sum-condition.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0189 - Rotate Array](https://leetcode.com/problems/rotate-array/) | ❌
| ❌
| [✔️](cpp%2F0189-rotate-array.cpp)
| ❌
| ❌
| [✔️](go%2F0189-rotate-array.go)
| ❌
| [✔️](java%2F0189-rotate-array.java)
| [✔️](javascript%2F0189-rotate-array.js)
| [✔️](kotlin%2F0189-rotate-array.kt)
| [✔️](python%2F0189-rotate-array.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F0189-rotate-array.ts)
+[1968 - Array With Elements Not Equal to Average of Neighbors](https://leetcode.com/problems/array-with-elements-not-equal-to-average-of-neighbors/) | ❌
| [✔️](c%2F1968-array-with-elements-not-equal-to-average-of-neighbors.c)
| [✔️](cpp%2F1968-array-with-elements-not-equal-to-average-of-neighbors.cpp)
| ❌
| ❌
| [✔️](go%2F1968-array-with-elements-not-equal-to-average-of-neighbors.go)
| ❌
| [✔️](java%2F1968-array-with-elements-not-equal-to-average-of-neighbors.java)
| [✔️](javascript%2F1968-array-with-elements-not-equal-to-average-of-neighbors.js)
| [✔️](kotlin%2F1968-array-with-elements-not-equal-to-average-of-neighbors.kt)
| [✔️](python%2F1968-array-with-elements-not-equal-to-average-of-neighbors.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0881 - Boats to Save People](https://leetcode.com/problems/boats-to-save-people/) | ❌
| [✔️](c%2F0881-boats-to-save-people.c)
| [✔️](cpp%2F0881-boats-to-save-people.cpp)
| ❌
| ❌
| [✔️](go%2F0881-boats-to-save-people.go)
| ❌
| [✔️](java%2F0881-boats-to-save-people.java)
| [✔️](javascript%2F0881-boats-to-save-people.js)
| [✔️](kotlin%2F0881-boats-to-save-people.kt)
| [✔️](python%2F0881-boats-to-save-people.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0881-boats-to-save-people.swift)
| [✔️](typescript%2F0881-boats-to-save-people.ts)
+[0042 - Trapping Rain Water](https://leetcode.com/problems/trapping-rain-water/) | ❌
| [✔️](c%2F0042-trapping-rain-water.c)
| [✔️](cpp%2F0042-trapping-rain-water.cpp)
| [✔️](csharp%2F0042-trapping-rain-water.cs)
| [✔️](dart%2F0042-trapping-rain-water.dart)
| [✔️](go%2F0042-trapping-rain-water.go)
| ❌
| [✔️](java%2F0042-trapping-rain-water.java)
| [✔️](javascript%2F0042-trapping-rain-water.js)
| [✔️](kotlin%2F0042-trapping-rain-water.kt)
| [✔️](python%2F0042-trapping-rain-water.py)
| [✔️](ruby%2F0042-trapping-rain-water.rb)
| [✔️](rust%2F0042-trapping-rain-water.rs)
| ❌
| [✔️](swift%2F0042-trapping-rain-water.swift)
| [✔️](typescript%2F0042-trapping-rain-water.ts)
+
+### Sliding Window
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0121 - Best Time to Buy And Sell Stock](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/) | ❌
| [✔️](c%2F0121-best-time-to-buy-and-sell-stock.c)
| [✔️](cpp%2F0121-best-time-to-buy-and-sell-stock.cpp)
| [✔️](csharp%2F0121-best-time-to-buy-and-sell-stock.cs)
| [✔️](dart%2F0121-best-time-to-buy-and-sell-stock.dart)
| [✔️](go%2F0121-best-time-to-buy-and-sell-stock.go)
| ❌
| [✔️](java%2F0121-best-time-to-buy-and-sell-stock.java)
| [✔️](javascript%2F0121-best-time-to-buy-and-sell-stock.js)
| [✔️](kotlin%2F0121-best-time-to-buy-and-sell-stock.kt)
| [✔️](python%2F0121-best-time-to-buy-and-sell-stock.py)
| [✔️](ruby%2F0121-best-time-to-buy-and-sell-stock.rb)
| [✔️](rust%2F0121-best-time-to-buy-and-sell-stock.rs)
| [✔️](scala%2F0121-best-time-to-buy-and-sell-stock.scala)
| [✔️](swift%2F0121-best-time-to-buy-and-sell-stock.swift)
| [✔️](typescript%2F0121-best-time-to-buy-and-sell-stock.ts)
+[0219 - Contains Duplicate II](https://leetcode.com/problems/contains-duplicate-ii/) | ❌
| ❌
| [✔️](cpp%2F0219-contains-duplicate-ii.cpp)
| [✔️](csharp%2F0219-contains-duplicate-ii.cs)
| ❌
| [✔️](go%2F0219-contains-duplicate-ii.go)
| ❌
| [✔️](java%2F0219-contains-duplicate-ii.java)
| [✔️](javascript%2F0219-contains-duplicate-ii.js)
| [✔️](kotlin%2F0219-contains-duplicate-ii.kt)
| [✔️](python%2F0219-contains-duplicate-ii.py)
| ❌
| [✔️](rust%2F0219-contains-duplicate-ii.rs)
| ❌
| [✔️](swift%2F0219-contains-duplicate-ii.swift)
| [✔️](typescript%2F0219-contains-duplicate-ii.ts)
+[1343 - Number of Sub Arrays of Size K and Avg Greater than or Equal to Threshold](https://leetcode.com/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | ❌
| ❌
| [✔️](cpp%2F1343-number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.cpp)
| [✔️](csharp%2F1343-number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.cs)
| ❌
| [✔️](go%2F1343-number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.go)
| ❌
| [✔️](java%2F1343-number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.java)
| [✔️](javascript%2F1343-number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.js)
| [✔️](kotlin%2F1343-number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.kt)
| [✔️](python%2F1343-number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F1343-number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.swift)
| ❌
+[0003 - Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters/) | ❌
| [✔️](c%2F0003-longest-substring-without-repeating-characters.c)
| [✔️](cpp%2F0003-longest-substring-without-repeating-characters.cpp)
| [✔️](csharp%2F0003-longest-substring-without-repeating-characters.cs)
| [✔️](dart%2F0003-longest-substring-without-repeating-characters.dart)
| [✔️](go%2F0003-longest-substring-without-repeating-characters.go)
| ❌
| [✔️](java%2F0003-longest-substring-without-repeating-characters.java)
| [✔️](javascript%2F0003-longest-substring-without-repeating-characters.js)
| [✔️](kotlin%2F0003-longest-substring-without-repeating-characters.kt)
| [✔️](python%2F0003-longest-substring-without-repeating-characters.py)
| [✔️](ruby%2F0003-longest-substring-without-repeating-characters.rb)
| [✔️](rust%2F0003-longest-substring-without-repeating-characters.rs)
| [✔️](scala%2F0003-longest-substring-without-repeating-characters.scala)
| [✔️](swift%2F0003-longest-substring-without-repeating-characters.swift)
| [✔️](typescript%2F0003-longest-substring-without-repeating-characters.ts)
+[0424 - Longest Repeating Character Replacement](https://leetcode.com/problems/longest-repeating-character-replacement/) | ❌
| [✔️](c%2F0424-longest-repeating-character-replacement.c)
| [✔️](cpp%2F0424-longest-repeating-character-replacement.cpp)
| [✔️](csharp%2F0424-longest-repeating-character-replacement.cs)
| ❌
| [✔️](go%2F0424-longest-repeating-character-replacement.go)
| ❌
| [✔️](java%2F0424-longest-repeating-character-replacement.java)
| [✔️](javascript%2F0424-longest-repeating-character-replacement.js)
| [✔️](kotlin%2F0424-longest-repeating-character-replacement.kt)
| [✔️](python%2F0424-longest-repeating-character-replacement.py)
| [✔️](ruby%2F0424-longest-repeating-character-replacement.rb)
| [✔️](rust%2F0424-longest-repeating-character-replacement.rs)
| ❌
| [✔️](swift%2F0424-longest-repeating-character-replacement.swift)
| [✔️](typescript%2F0424-longest-repeating-character-replacement.ts)
+[0567 - Permutation In String](https://leetcode.com/problems/permutation-in-string/) | ❌
| [✔️](c%2F0567-permutation-in-string.c)
| [✔️](cpp%2F0567-permutation-in-string.cpp)
| [✔️](csharp%2F0567-permutation-in-string.cs)
| ❌
| [✔️](go%2F0567-permutation-in-string.go)
| ❌
| [✔️](java%2F0567-permutation-in-string.java)
| [✔️](javascript%2F0567-permutation-in-string.js)
| [✔️](kotlin%2F0567-permutation-in-string.kt)
| [✔️](python%2F0567-permutation-in-string.py)
| ❌
| [✔️](rust%2F0567-permutation-in-string.rs)
| ❌
| [✔️](swift%2F0567-permutation-in-string.swift)
| [✔️](typescript%2F0567-permutation-in-string.ts)
+[1838 - Frequency of The Most Frequent Element](https://leetcode.com/problems/frequency-of-the-most-frequent-element/) | ❌
| [✔️](c%2F1838-frequency-of-the-most-frequent-element.c)
| [✔️](cpp%2F1838-frequency-of-the-most-frequent-element.cpp)
| [✔️](csharp%2F1838-Frequency-Of-The-Most-Frequent-Element.cs)
| ❌
| [✔️](go%2F1838-frequency-of-the-most-frequent-element.go)
| ❌
| [✔️](java%2F1838-frequency-of-the-most-frequent-element.java)
| [✔️](javascript%2F1838-frequency-of-the-most-frequent-element.js)
| [✔️](kotlin%2F1838-frequency-of-the-most-frequent-element.kt)
| [✔️](python%2F1838-frequency-of-the-most-frequent-element.py)
| ❌
| [✔️](rust%2F1838-frequency-of-the-most-frequent-element.rs)
| ❌
| ❌
| [✔️](typescript%2F1838-frequency-of-the-most-frequent-element.ts)
+[0904 - Fruits into Basket](https://leetcode.com/problems/fruit-into-baskets/) | ❌
| ❌
| [✔️](cpp%2F0904-fruit-into-baskets.cpp)
| ❌
| ❌
| [✔️](go%2F0904-fruit-into-baskets.go)
| ❌
| [✔️](java%2F0904-fruit-into-baskets.java)
| [✔️](javascript%2F0904-fruit-into-baskets.js)
| [✔️](kotlin%2F0904-fruit-into-baskets.kt)
| [✔️](python%2F0904-fruit-into-baskets.py)
| ❌
| [✔️](rust%2F0904-fruit-into-baskets.rs)
| ❌
| ❌
| [✔️](typescript%2F0904-fruit-into-baskets.ts)
+[1456 - Maximum Number of Vowels in a Substring of Given Length](https://leetcode.com/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | ❌
| [✔️](c%2F1456-maximum-number-of-vowels-in-a-substring-of-given-length.c)
| [✔️](cpp%2F1456-maximum-number-of-vowels-in-a-substring-of-given-length.cpp)
| ❌
| ❌
| [✔️](go%2F1456-maximum-number-of-vowels-in-a-substring-of-given-length.go)
| ❌
| [✔️](java%2F1456-maximum-number-of-vowels-in-a-substring-of-given-length.java)
| ❌
| [✔️](kotlin%2F1456-maximum-number-of-vowels-in-a-substring-of-given-length.kt)
| [✔️](python%2F1456-maximum-number-of-vowels-in-a-substring-of-given-length.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1888 - Minimum Number of Flips to Make The Binary String Alternating](https://leetcode.com/problems/minimum-number-of-flips-to-make-the-binary-string-alternating/) | ❌
| ❌
| [✔️](cpp%2F1888-minimum-number-of-flips-to-make-the-binary-string-alternating.cpp)
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F1888-minimum-number-of-flips-to-make-the-binary-string-alternating.js)
| [✔️](kotlin%2F1888-minimum-number-of-flips-to-make-the-binary-string-alternating.kt)
| [✔️](python%2F1888-minimum-number-of-flips-to-make-the-binary-string-alternating.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F1888-minimum-number-of-flips-to-make-the-binary-string-alternating.ts)
+[0209 - Minimum Size Subarray Sum](https://leetcode.com/problems/minimum-size-subarray-sum/) | ❌
| [✔️](c%2F0209-minimum-size-subarray-sum.c)
| [✔️](cpp%2F0209-minimum-size-subarray-sum.cpp)
| ❌
| ❌
| [✔️](go%2F0209-minimum-size-subarray-sum.go)
| ❌
| [✔️](java%2F0209-minimum-size-subarray-sum.java)
| [✔️](javascript%2F0209-minimum-size-subarray-sum.js)
| [✔️](kotlin%2F0209-minimum-size-subarray-sum.kt)
| [✔️](python%2F0209-minimum-size-subarray-sum.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0209-minimum-size-subarray-sum.swift)
| ❌
+[0658 - Find K Closest Elements](https://leetcode.com/problems/find-k-closest-elements/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F0658-find-k-closest-elements.go)
| ❌
| [✔️](java%2F0658-find-k-closest-elements.java)
| [✔️](javascript%2F0658-find-k-closest-elements.js)
| [✔️](kotlin%2F0658-find-k-closest-elements.kt)
| [✔️](python%2F0658-find-k-closest-elements.py)
| ❌
| [✔️](rust%2F0658-find-k-closest-elements.rs)
| ❌
| ❌
| [✔️](typescript%2F0658-find-k-closest-elements.ts)
+[1658 - Minimum Operations to Reduce X to Zero](https://leetcode.com/problems/minimum-operations-to-reduce-x-to-zero/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F1658-minimum-operations-to-reduce-x-to-zero.go)
| ❌
| [✔️](java%2F1658-minimum-operations-to-reduce-x-to-zero.java)
| ❌
| [✔️](kotlin%2F1658-minimum-operations-to-reduce-x-to-zero.kt)
| [✔️](python%2F1658-minimum-operations-to-reduce-x-to-zero.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0076 - Minimum Window Substring](https://leetcode.com/problems/minimum-window-substring/) | ❌
| [✔️](c%2F0076-minimum-window-substring.c)
| [✔️](cpp%2F0076-minimum-window-substring.cpp)
| [✔️](csharp%2F0076-minimum-window-substring.cs)
| ❌
| [✔️](go%2F0076-minimum-window-substring.go)
| ❌
| [✔️](java%2F0076-minimum-window-substring.java)
| [✔️](javascript%2F0076-minimum-window-substring.js)
| [✔️](kotlin%2F0076-minimum-window-substring.kt)
| [✔️](python%2F0076-minimum-window-substring.py)
| [✔️](ruby%2F0076-minimum-window-substring.rb)
| [✔️](rust%2F0076-minimum-window-substring.rs)
| ❌
| [✔️](swift%2F0076-minimum-window-substring.swift)
| [✔️](typescript%2F0076-minimum-window-substring.ts)
+[0239 - Sliding Window Maximum](https://leetcode.com/problems/sliding-window-maximum/) | ❌
| [✔️](c%2F0239-sliding-window-maximum.c)
| [✔️](cpp%2F0239-sliding-window-maximum.cpp)
| [✔️](csharp%2F0239-sliding-window-maximum.cs)
| ❌
| [✔️](go%2F0239-sliding-window-maximum.go)
| ❌
| [✔️](java%2F0239-sliding-window-maximum.java)
| [✔️](javascript%2F0239-sliding-window-maximum.js)
| [✔️](kotlin%2F0239-sliding-window-maximum.kt)
| [✔️](python%2F0239-sliding-window-maximum.py)
| [✔️](ruby%2F0239-sliding-window-maximum.rb)
| [✔️](rust%2F0239-sliding-window-maximum.rs)
| ❌
| [✔️](swift%2F0239-sliding-window-maximum.swift)
| [✔️](typescript%2F0239-sliding-window-maximum.ts)
+
+### Stack
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0020 - Valid Parentheses](https://leetcode.com/problems/valid-parentheses/) | ❌
| [✔️](c%2F0020-valid-parentheses.c)
| [✔️](cpp%2F0020-valid-parentheses.cpp)
| [✔️](csharp%2F0020-valid-parentheses.cs)
| [✔️](dart%2F0020-valid-parentheses.dart)
| [✔️](go%2F0020-valid-parentheses.go)
| ❌
| [✔️](java%2F0020-valid-parentheses.java)
| [✔️](javascript%2F0020-valid-parentheses.js)
| [✔️](kotlin%2F0020-valid-parentheses.kt)
| [✔️](python%2F0020-valid-parentheses.py)
| [✔️](ruby%2F0020-valid-parentheses.rb)
| [✔️](rust%2F0020-valid-parentheses.rs)
| ❌
| [✔️](swift%2F0020-valid-parentheses.swift)
| [✔️](typescript%2F0020-valid-parentheses.ts)
+[0682 - Baseball Game](https://leetcode.com/problems/baseball-game/) | ❌
| [✔️](c%2F0682-baseball-game.c)
| [✔️](cpp%2F0682-baseball-game.cpp)
| [✔️](csharp%2F0682-baseball-game.cs)
| ❌
| [✔️](go%2F0682-baseball-game.go)
| ❌
| [✔️](java%2F0682-baseball-game.java)
| [✔️](javascript%2F0682-Baseball-Game.js)
| [✔️](kotlin%2F0682-baseball-game.kt)
| [✔️](python%2F0682-baseball-game.py)
| ❌
| [✔️](rust%2F0682-baseball-game.rs)
| ❌
| [✔️](swift%2F0682-baseball-game.swift)
| [✔️](typescript%2F0682-baseball-game.ts)
+[0225 - Implement Stack Using Queues](https://leetcode.com/problems/implement-stack-using-queues/) | ❌
| [✔️](c%2F0225-implement-stack-using-queues.c)
| [✔️](cpp%2F0225-implement-stack-using-queues.cpp)
| [✔️](csharp%2F0225-implement-stack-using-queues.cs)
| ❌
| [✔️](go%2F0225-implement-stack-using-queues.go)
| ❌
| [✔️](java%2F0225-implement-stack-using-queues.java)
| [✔️](javascript%2F0225-implement-stack-using-queues.js)
| [✔️](kotlin%2F0225-implement-stack-using-queues.kt)
| [✔️](python%2F0225-implement-stack-using-queues.py)
| ❌
| [✔️](rust%2F0225-implement-stack-using-queues.rs)
| ❌
| [✔️](swift%2F0225-implement-stack-using-queues.swift)
| [✔️](typescript%2F0225-implement-stack-using-queues.ts)
+[0155 - Min Stack](https://leetcode.com/problems/min-stack/) | ❌
| [✔️](c%2F0155-min-stack.c)
| [✔️](cpp%2F0155-min-stack.cpp)
| [✔️](csharp%2F0155-min-stack.cs)
| [✔️](dart%2F0155-min-stack.dart)
| [✔️](go%2F0155-min-stack.go)
| ❌
| [✔️](java%2F0155-min-stack.java)
| [✔️](javascript%2F0155-min-stack.js)
| [✔️](kotlin%2F0155-min-stack.kt)
| [✔️](python%2F0155-min-stack.py)
| [✔️](ruby%2F0155-min-stack.rb)
| [✔️](rust%2F0155-min-stack.rs)
| ❌
| [✔️](swift%2F0155-min-stack.swift)
| [✔️](typescript%2F0155-min-stack.ts)
+[0150 - Evaluate Reverse Polish Notation](https://leetcode.com/problems/evaluate-reverse-polish-notation/) | ❌
| [✔️](c%2F0150-evaluate-reverse-polish-notation.c)
| [✔️](cpp%2F0150-evaluate-reverse-polish-notation.cpp)
| [✔️](csharp%2F0150-evaluate-reverse-polish-notation.cs)
| [✔️](dart%2F0150-evaluate-reverse-polish-notation.dart)
| [✔️](go%2F0150-evaluate-reverse-polish-notation.go)
| ❌
| [✔️](java%2F0150-evaluate-reverse-polish-notation.java)
| [✔️](javascript%2F0150-evaluate-reverse-polish-notation.js)
| [✔️](kotlin%2F0150-evaluate-reverse-polish-notation.kt)
| [✔️](python%2F0150-evaluate-reverse-polish-notation.py)
| [✔️](ruby%2F0150-evaluate-reverse-polish-notation.rb)
| [✔️](rust%2F0150-evaluate-reverse-polish-notation.rs)
| ❌
| [✔️](swift%2F0150-evaluate-reverse-polish-notation.swift)
| [✔️](typescript%2F0150-evaluate-reverse-polish-notation.ts)
+[2390 - Removing Stars From a String](https://leetcode.com/problems/removing-stars-from-a-string/) | ❌
| ❌
| [✔️](cpp%2F2390-removing-stars-from-a-string.cpp)
| [✔️](csharp%2F2390-removing-stars-from-a-string.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F2390-removing-stars-from-a-string.java)
| [✔️](javascript%2F2390-removing-stars-from-a-string.js)
| [✔️](kotlin%2F2390-removing-stars-from-a-string.kt)
| [✔️](python%2F2390-removing-stars-from-a-string.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F2390-removing-stars-from-a-string.ts)
+[0946 - Validate Stack Sequences](https://leetcode.com/problems/validate-stack-sequences/) | ❌
| ❌
| [✔️](cpp%2F0946-validate-stack-sequences.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0946-validate-stack-sequences.java)
| ❌
| [✔️](kotlin%2F0946-validate-stack-sequences.kt)
| [✔️](python%2F0946-validate-stack-sequences.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0022 - Generate Parentheses](https://leetcode.com/problems/generate-parentheses/) | ❌
| [✔️](c%2F0022-generate-parentheses.c)
| [✔️](cpp%2F0022-generate-parentheses.cpp)
| [✔️](csharp%2F0022-generate-parentheses.cs)
| ❌
| [✔️](go%2F0022-generate-parentheses.go)
| ❌
| [✔️](java%2F0022-generate-parentheses.java)
| [✔️](javascript%2F0022-generate-parentheses.js)
| [✔️](kotlin%2F0022-generate-parentheses.kt)
| [✔️](python%2F0022-generate-parentheses.py)
| [✔️](ruby%2F0022-generate-parentheses.rb)
| [✔️](rust%2F0022-generate-parentheses.rs)
| ❌
| [✔️](swift%2F0022-generate-parentheses.swift)
| [✔️](typescript%2F0022-generate-parentheses.ts)
+[0735 - Asteroid Collision](https://leetcode.com/problems/asteroid-collision/) | ❌
| ❌
| [✔️](cpp%2F0735-asteroid-collision.cpp)
| ❌
| ❌
| [✔️](go%2F0735-asteroid-collision.go)
| ❌
| [✔️](java%2F0735-asteroid-collision.java)
| [✔️](javascript%2F0735-asteroid-collision.js)
| [✔️](kotlin%2F0735-asteroid-collision.kt)
| [✔️](python%2F0735-asteroid-collision.py)
| ❌
| [✔️](rust%2F0735-asteroid-collision.rs)
| ❌
| [✔️](swift%2F0735-asteroid-collision.swift)
| [✔️](typescript%2F0735-asteroid-collision.ts)
+[0739 - Daily Temperatures](https://leetcode.com/problems/daily-temperatures/) | ❌
| [✔️](c%2F0739-daily-temperatures.c)
| [✔️](cpp%2F0739-daily-temperatures.cpp)
| [✔️](csharp%2F0739-daily-temperatures.cs)
| ❌
| [✔️](go%2F0739-daily-temperatures.go)
| ❌
| [✔️](java%2F0739-daily-temperatures.java)
| [✔️](javascript%2F0739-daily-temperatures.js)
| [✔️](kotlin%2F0739-daily-temperatures.kt)
| [✔️](python%2F0739-daily-temperatures.py)
| [✔️](ruby%2F0739-daily-temperatures.rb)
| [✔️](rust%2F0739-daily-temperatures.rs)
| ❌
| [✔️](swift%2F0739-daily-temperatures.swift)
| [✔️](typescript%2F0739-daily-temperatures.ts)
+[0901 - Online Stock Span](https://leetcode.com/problems/online-stock-span/) | ❌
| ❌
| [✔️](cpp%2F0901-online-stock-span.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0901-online-stock-span.java)
| [✔️](javascript%2F0901-online-stock-span.js)
| [✔️](kotlin%2F0901-online-stock-span.kt)
| [✔️](python%2F0901-online-stock-span.py)
| ❌
| [✔️](rust%2F0901-online-stock-span.rs)
| ❌
| ❌
| [✔️](typescript%2F0901-online-stock-span.ts)
+[0853 - Car Fleet](https://leetcode.com/problems/car-fleet/) | ❌
| [✔️](c%2F0853-car-fleet.c)
| [✔️](cpp%2F0853-car-fleet.cpp)
| [✔️](csharp%2F0853-car-fleet.cs)
| ❌
| [✔️](go%2F0853-car-fleet.go)
| ❌
| [✔️](java%2F0853-car-fleet.java)
| [✔️](javascript%2F0853-car-fleet.js)
| [✔️](kotlin%2F0853-car-fleet.kt)
| [✔️](python%2F0853-car-fleet.py)
| [✔️](ruby%2F0853-car-fleet.rb)
| [✔️](rust%2F0853-car-fleet.rs)
| ❌
| [✔️](swift%2F0853-car-fleet.swift)
| [✔️](typescript%2F0853-car-fleet.ts)
+[0071 - Simplify Path](https://leetcode.com/problems/simplify-path/) | ❌
| ❌
| [✔️](cpp%2F0071-simplify-path.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0071-simplify-path.java)
| [✔️](javascript%2F0071-simplify-path.js)
| [✔️](kotlin%2F0071-simplify-path.kt)
| [✔️](python%2F0071-simplify-path.py)
| ❌
| [✔️](rust%2F0071-simplify-path.rs)
| ❌
| ❌
| [✔️](typescript%2F0071-simplify-path.ts)
+[0394 - Decode String](https://leetcode.com/problems/decode-string/) | ❌
| ❌
| [✔️](cpp%2F0394-decode-string.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0394-decode-string.java)
| ❌
| [✔️](kotlin%2F0394-decode-string.kt)
| [✔️](python%2F0394-decode-string.py)
| ❌
| [✔️](rust%2F0394-decode-string.rs)
| [✔️](scala%2F0394-decode-string.scala)
| ❌
| [✔️](typescript%2F0394-decode-string.ts)
+[0402 - Remove K Digits](https://leetcode.com/problems/remove-k-digits/) | ❌
| ❌
| [✔️](cpp%2F0402-remove-k-digits.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0402-remove-k-digits.java)
| [✔️](javascript%2F0402-remove-k-digits.js)
| [✔️](kotlin%2F0402-remove-k-digits.kt)
| [✔️](python%2F0402-remove-k-digits.py)
| ❌
| [✔️](rust%2F0402-remove-k-digits.rs)
| ❌
| ❌
| [✔️](typescript%2F0402-remove-k-digits.ts)
+[1209 - Remove All Adjacent Duplicates In String II](https://leetcode.com/problems/remove-all-adjacent-duplicates-in-string-ii/) | ❌
| ❌
| [✔️](cpp%2F1209-Remove-All-Adjacent-Duplicates-in-String-II.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1209-remove-all-adjacent-duplicates-in-string-ii.java)
| [✔️](javascript%2F1209-Remove-All-Adjacent-Duplicates-in-String-II.js)
| [✔️](kotlin%2F1209-remove-all-adjacent-duplicates-in-string-ii.kt)
| [✔️](python%2F1209-remove-all-adjacent-duplicates-in-string-ii.py)
| ❌
| [✔️](rust%2F1209-remove-all-adjacent-duplicates-in-string-II.rs)
| ❌
| ❌
| [✔️](typescript%2F1209-remove-all-adjacent-duplicates-in-string-II.ts)
+[0456 - 132 Pattern](https://leetcode.com/problems/132-pattern/) | ❌
| ❌
| [✔️](cpp%2F0456-132-pattern.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0456-132-pattern.java)
| [✔️](javascript%2F0456-132-pattern.js)
| [✔️](kotlin%2F0456-132-pattern.kt)
| [✔️](python%2F0456-132-pattern.py)
| ❌
| [✔️](rust%2F0456-132-pattern.rs)
| ❌
| ❌
| [✔️](typescript%2F0456-132-pattern.ts)
+[0895 - Maximum Frequency Stack](https://leetcode.com/problems/maximum-frequency-stack/) | ❌
| ❌
| [✔️](cpp%2F0895-maximum-frequency-stack.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0895-maximum-frequency-stack.java)
| [✔️](javascript%2F0895-maximum-frequency-stack.js)
| [✔️](kotlin%2F0895-maximum-frequency-stack.kt)
| [✔️](python%2F0895-maximum-frequency-stack.py)
| ❌
| [✔️](rust%2F0895-maximum-frequency-stack.rs)
| ❌
| ❌
| [✔️](typescript%2F0895-maximum-frequency-stack.ts)
+[0084 - Largest Rectangle In Histogram](https://leetcode.com/problems/largest-rectangle-in-histogram/) | ❌
| [✔️](c%2F0084-largest-rectangle-in-histogram.c)
| [✔️](cpp%2F0084-largest-rectangle-in-histogram.cpp)
| [✔️](csharp%2F0084-largest-rectangle-in-histogram.cs)
| ❌
| [✔️](go%2F0084-largest-rectangle-in-histogram.go)
| ❌
| [✔️](java%2F0084-largest-rectangle-in-histogram.java)
| [✔️](javascript%2F0084-largest-rectangle-in-histogram.js)
| [✔️](kotlin%2F0084-largest-rectangle-in-histogram.kt)
| [✔️](python%2F0084-largest-rectangle-in-histogram.py)
| [✔️](ruby%2F0084-largest-rectangle-in-histogram.rb)
| [✔️](rust%2F0084-largest-rectangle-in-histogram.rs)
| ❌
| [✔️](swift%2F0084-largest-rectangle-in-histogram.swift)
| [✔️](typescript%2F0084-largest-rectangle-in-histogram.ts)
+
+### Binary Search
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0704 - Binary Search](https://leetcode.com/problems/binary-search/) | ❌
| [✔️](c%2F0704-binary-search.c)
| [✔️](cpp%2F0704-binary-search.cpp)
| [✔️](csharp%2F0704-binary-search.cs)
| [✔️](dart%2F0704-binary-search.dart)
| [✔️](go%2F0704-binary-search.go)
| ❌
| [✔️](java%2F0704-binary-search.java)
| [✔️](javascript%2F0704-binary-search.js)
| [✔️](kotlin%2F0704-binary-search.kt)
| [✔️](python%2F0704-binary-search.py)
| [✔️](ruby%2F0704-binary-search.rb)
| [✔️](rust%2F0704-binary-search.rs)
| [✔️](scala%2F0704-binary-search.scala)
| [✔️](swift%2F0704-binary-search.swift)
| [✔️](typescript%2F0704-binary-search.ts)
+[0035 - Search Insert Position](https://leetcode.com/problems/search-insert-position/) | ❌
| [✔️](c%2F0035-search-insert-position.c)
| [✔️](cpp%2F0035-search-insert-position.cpp)
| [✔️](csharp%2F0035-search-insert-position.cs)
| ❌
| [✔️](go%2F0035-search-insert-position.go)
| ❌
| [✔️](java%2F0035-search-insert-position.java)
| [✔️](javascript%2F0035-search-insert-position.js)
| [✔️](kotlin%2F0035-search-insert-position.kt)
| [✔️](python%2F0035-search-insert-position.py)
| [✔️](ruby%2F0035-search-insert-position.rb)
| [✔️](rust%2F0035-search-insert-position.rs)
| ❌
| [✔️](swift%2F0035-search-insert-position.swift)
| [✔️](typescript%2F0035-search-insert-position.ts)
+[0374 - Guess Number Higher Or Lower](https://leetcode.com/problems/guess-number-higher-or-lower/) | ❌
| [✔️](c%2F0374-guess-number-higher-or-lower.c)
| [✔️](cpp%2F0374-guess-number-higher-or-lower.cpp)
| [✔️](csharp%2F0374-guess-number-higher-or-lower.cs)
| ❌
| [✔️](go%2F0374-guess-number-higher-or-lower.go)
| ❌
| [✔️](java%2F0374-guess-number-higher-or-lower.java)
| [✔️](javascript%2F0374-guess-number-higher-or-lower.js)
| [✔️](kotlin%2F0374-guess-number-higher-or-lower.kt)
| [✔️](python%2F0374-guess-number-higher-or-lower.py)
| ❌
| [✔️](rust%2F0374-guess-number-higher-or-lower.rs)
| ❌
| [✔️](swift%2F0374-guess-number-higher-or-lower.swift)
| ❌
+[0441 - Arranging Coins](https://leetcode.com/problems/arranging-coins/) | ❌
| ❌
| [✔️](cpp%2F0441-arranging-coins.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0441-arranging-coins.java)
| [✔️](javascript%2F0441-arranging-coins.js)
| [✔️](kotlin%2F0441-arranging-coins.kt)
| [✔️](python%2F0441-arranging-coins.py)
| ❌
| [✔️](rust%2F0441-arranging-coins.rs)
| ❌
| ❌
| ❌
+[0977 - Squares of a Sorted Array](https://leetcode.com/problems/squares-of-a-sorted-array/) | ❌
| ❌
| [✔️](cpp%2F0977-squares-of-a-sorted-array.cpp)
| ❌
| ❌
| [✔️](go%2F0977-squares-of-a-sorted-array.go)
| ❌
| [✔️](java%2F0977-squares-of-a-sorted-array.java)
| [✔️](javascript%2F0977-squares-of-a-sorted-array.js)
| [✔️](kotlin%2F0977-squares-of-a-sorted-array.kt)
| [✔️](python%2F0977-squares-of-a-sorted-array.py)
| ❌
| [✔️](rust%2F0977-squares-of-a-sorted-array.rs)
| ❌
| [✔️](swift%2F0977-squares-of-a-sorted-array.swift)
| [✔️](typescript%2F0977-squares-of-a-sorted-array.ts)
+[0367 - Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square/) | ❌
| [✔️](c%2F0367-valid-perfect-square.c)
| [✔️](cpp%2F0367-valid-perfect-square.cpp)
| ❌
| ❌
| [✔️](go%2F0367-valid-perfect-square.go)
| ❌
| [✔️](java%2F0367-valid-perfect-square.java)
| [✔️](javascript%2F0367-valid-perfect-square.js)
| [✔️](kotlin%2F0367-valid-perfect-square.kt)
| [✔️](python%2F0367-valid-perfect-square.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0367-valid-perfect-square.swift)
| ❌
+[0069 - Sqrt(x) ](https://leetcode.com/problems/sqrtx/) | ❌
| [✔️](c%2F0069-sqrtx.c)
| [✔️](cpp%2F0069-sqrtx.cpp)
| [✔️](csharp%2F0069-sqrtx.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0069-sqrtx.java)
| [✔️](javascript%2F0069-sqrtx.js)
| [✔️](kotlin%2F0069-sqrtx.kt)
| [✔️](python%2F0069-sqrtx.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0540 - Single Element in a Sorted Array](https://leetcode.com/problems/single-element-in-a-sorted-array/) | ❌
| [✔️](c%2F0540-single-element-in-a-sorted-array.c)
| [✔️](cpp%2F0540-single-element-in-a-sorted-array.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0540-single-element-in-a-sorted-array.java)
| [✔️](javascript%2F0540-single-element-in-a-sorted-array.js)
| [✔️](kotlin%2F0540-single-element-in-a-sorted-array.kt)
| [✔️](python%2F0540-single-element-in-a-sorted-array.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F0540-single-element-in-a-sorted-array.ts)
+[1011 - Capacity to Ship Packages](https://leetcode.com/problems/capacity-to-ship-packages-within-d-days/) | ❌
| ❌
| [✔️](cpp%2F1011-capacity-to-ship-packages-within-d-days.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1011-capacity-to-ship-packages-within-d-days.java)
| ❌
| [✔️](kotlin%2F1011-capacity-to-ship-packages-within-d-days.kt)
| [✔️](python%2F1011-capacity-to-ship-packages-within-d-days.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0162 - Find Peak Element](https://leetcode.com/problems/find-peak-element/) | ❌
| [✔️](c%2F0162-find-peak-element.c)
| [✔️](cpp%2F0162-find-peak-element.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0162-find-peak-element.java)
| [✔️](javascript%2F0162-find-peak-element.js)
| [✔️](kotlin%2F0162-find-peak-element.kt)
| [✔️](python%2F0162-find-peak-element.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[2300 - Successful Pairs of Spells and Potions](https://leetcode.com/problems/successful-pairs-of-spells-and-potions/) | ❌
| ❌
| [✔️](cpp%2F2300-successful-pairs-of-spells-and-potions.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F2300-successful-pairs-of-spells-and-potions.java)
| ❌
| [✔️](kotlin%2F2300-successful-pairs-of-spells-and-potions.kt)
| [✔️](python%2F2300-successful-pairs-of-spells-and-potions.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0074 - Search a 2D Matrix](https://leetcode.com/problems/search-a-2d-matrix/) | ❌
| [✔️](c%2F0074-search-a-2d-matrix.c)
| [✔️](cpp%2F0074-search-a-2d-matrix.cpp)
| [✔️](csharp%2F0074-search-a-2d-matrix.cs)
| ❌
| [✔️](go%2F0074-search-a-2d-matrix.go)
| ❌
| [✔️](java%2F0074-search-a-2d-matrix.java)
| [✔️](javascript%2F0074-search-a-2d-matrix.js)
| [✔️](kotlin%2F0074-search-a-2d-matrix.kt)
| [✔️](python%2F0074-search-a-2d-matrix.py)
| [✔️](ruby%2F0074-search-a-2d-matrix.rb)
| [✔️](rust%2F0074-search-a-2d-matrix.rs)
| ❌
| [✔️](swift%2F0074-search-a-2d-matrix.swift)
| [✔️](typescript%2F0074-search-a-2d-matrix.ts)
+[0875 - Koko Eating Bananas](https://leetcode.com/problems/koko-eating-bananas/) | ❌
| [✔️](c%2F0875-koko-eating-bananas.c)
| [✔️](cpp%2F0875-koko-eating-bananas.cpp)
| [✔️](csharp%2F0875-koko-eating-bananas.cs)
| ❌
| [✔️](go%2F0875-koko-eating-bananas.go)
| ❌
| [✔️](java%2F0875-koko-eating-bananas.java)
| [✔️](javascript%2F0875-koko-eating-bananas.js)
| [✔️](kotlin%2F0875-koko-eating-bananas.kt)
| [✔️](python%2F0875-koko-eating-bananas.py)
| [✔️](ruby%2F0875-koko-eating-bananas.rb)
| [✔️](rust%2F0875-koko-eating-bananas.rs)
| ❌
| [✔️](swift%2F0875-koko-eating-bananas.swift)
| [✔️](typescript%2F0875-koko-eating-bananas.ts)
+[2616 - Minimize the Maximum Difference of Pairs](https://leetcode.com/problems/minimize-the-maximum-difference-of-pairs/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F2616-minimize-the-maximum-difference-of-pairs.java)
| ❌
| [✔️](kotlin%2F2616-minimize-the-maximum-difference-of-pairs.kt)
| [✔️](python%2F2616-minimize-the-maximum-difference-of-pairs.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0153 - Find Minimum In Rotated Sorted Array](https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/) | ❌
| [✔️](c%2F0153-find-minimum-in-rotated-sorted-array.c)
| [✔️](cpp%2F0153-find-minimum-in-rotated-sorted-array.cpp)
| [✔️](csharp%2F0153-find-minimum-in-rotated-sorted-array.cs)
| ❌
| [✔️](go%2F0153-find-minimum-in-rotated-sorted-array.go)
| ❌
| [✔️](java%2F0153-find-minimum-in-rotated-sorted-array.java)
| [✔️](javascript%2F0153-find-minimum-in-rotated-sorted-array.js)
| [✔️](kotlin%2F0153-find-minimum-in-rotated-sorted-array.kt)
| [✔️](python%2F0153-find-minimum-in-rotated-sorted-array.py)
| [✔️](ruby%2F0153-find-minimum-in-rotated-sorted-array.rb)
| [✔️](rust%2F0153-find-minimum-in-rotated-sorted-array.rs)
| [✔️](scala%2F0153-find-minimum-in-rotated-sorted-array.scala)
| [✔️](swift%2F0153-find-minimum-in-rotated-sorted-array.swift)
| [✔️](typescript%2F0153-find-minimum-in-rotated-sorted-array.ts)
+[0033 - Search In Rotated Sorted Array](https://leetcode.com/problems/search-in-rotated-sorted-array/) | ❌
| [✔️](c%2F0033-search-in-rotated-sorted-array.c)
| [✔️](cpp%2F0033-search-in-rotated-sorted-array.cpp)
| [✔️](csharp%2F0033-search-in-rotated-sorted-array.cs)
| ❌
| [✔️](go%2F0033-search-in-rotated-sorted-array.go)
| ❌
| [✔️](java%2F0033-search-in-rotated-sorted-array.java)
| [✔️](javascript%2F0033-search-in-rotated-sorted-array.js)
| [✔️](kotlin%2F0033-search-in-rotated-sorted-array.kt)
| [✔️](python%2F0033-search-in-rotated-sorted-array.py)
| ❌
| [✔️](rust%2F0033-search-in-rotated-sorted-array.rs)
| [✔️](scala%2F0033-search-in-rotated-sorted-array.scala)
| [✔️](swift%2F0033-search-in-rotated-sorted-array.swift)
| [✔️](typescript%2F0033-search-in-rotated-sorted-array.ts)
+[0081 - Search In Rotated Sorted Array II](https://leetcode.com/problems/search-in-rotated-sorted-array-ii/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0081-search-in-rotated-sorted-array-ii.java)
| ❌
| [✔️](kotlin%2F0081-search-in-rotated-sorted-array-ii.kt)
| [✔️](python%2F0081-search-in-rotated-sorted-array-ii.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0981 - Time Based Key Value Store](https://leetcode.com/problems/time-based-key-value-store/) | ❌
| [✔️](c%2F0981-time-based-key-value-store.c)
| [✔️](cpp%2F0981-time-based-key-value-store.cpp)
| [✔️](csharp%2F0981-time-based-key-value-store.cs)
| ❌
| [✔️](go%2F0981-time-based-key-value-store.go)
| ❌
| [✔️](java%2F0981-time-based-key-value-store.java)
| [✔️](javascript%2F0981-time-based-key-value-store.js)
| [✔️](kotlin%2F0981-time-based-key-value-store.kt)
| [✔️](python%2F0981-time-based-key-value-store.py)
| [✔️](ruby%2F0981-Time-Based-Key-Value-Store.rb)
| [✔️](rust%2F0981-time-based-key-value-store.rs)
| ❌
| [✔️](swift%2F0981-time-based-key-value-store.swift)
| [✔️](typescript%2F0981-time-based-key-value-store.ts)
+[0034 - Find First And Last Position of Element In Sorted Array](https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/) | ❌
| ❌
| [✔️](cpp%2F0034-find-first-and-last-position-of-element-in-sorted-array.cpp)
| [✔️](csharp%2F0034-find-first-and-last-position-of-element-in-sorted-array.cs)
| ❌
| [✔️](go%2F0034-find-first-and-last-position-of-element-in-sorted-array.go)
| ❌
| [✔️](java%2F0034-find-first-and-last-position-of-element-in-sorted-array.java)
| [✔️](javascript%2F0034-find-first-and-last-position-of-element-in-sorted-array.js)
| [✔️](kotlin%2F0034-find-first-and-last-position-of-element-in-sorted-array.kt)
| [✔️](python%2F0034-find-first-and-last-position-of-element-in-sorted-array.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0034-find-first-and-last-position-of-element-in-sorted-array.swift)
| ❌
+[1898 - Maximum Number of Removable Characters](https://leetcode.com/problems/maximum-number-of-removable-characters/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F1898-maximum-number-of-removable-characters.go)
| ❌
| [✔️](java%2F1898-maximum-number-of-removable-characters.java)
| [✔️](javascript%2F1898-maximum-number-of-removable-characters.js)
| [✔️](kotlin%2F1898-maximum-number-of-removable-characters.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0116 - Populating Next Right Pointers In Each Node](https://leetcode.com/problems/populating-next-right-pointers-in-each-node/) | ❌
| ❌
| [✔️](cpp%2F0116-populating-next-right-pointers-in-each-node.cpp)
| ❌
| ❌
| [✔️](go%2F0116-populating-next-right-pointers-in-each-node.go)
| ❌
| [✔️](java%2F0116-populating-next-right-pointers-in-each-node.java)
| [✔️](javascript%2F0116-populating-next-right-pointers-in-each-node.js)
| [✔️](kotlin%2F0116-populating-next-right-pointers-in-each-node.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1268 - Search Suggestions System](https://leetcode.com/problems/search-suggestions-system/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1268-search-suggestions-system.java)
| [✔️](javascript%2F1268-search-suggestions-system.js)
| [✔️](kotlin%2F1268-search-suggestions-system.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0410 - Split Array Largest Sum](https://leetcode.com/problems/split-array-largest-sum/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0410-split-array-largest-sum.java)
| [✔️](javascript%2F0410-split-array-largest-sum.js)
| [✔️](kotlin%2F0410-split-array-largest-sum.kt)
| [✔️](python%2F0410-split-array-largest-sum.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0004 - Median of Two Sorted Arrays](https://leetcode.com/problems/median-of-two-sorted-arrays/) | ❌
| [✔️](c%2F0004-median-of-two-sorted-arrays.c)
| [✔️](cpp%2F0004-median-of-two-sorted-arrays.cpp)
| [✔️](csharp%2F0004-median-of-two-sorted-arrays.cs)
| [✔️](dart%2F0004-median-of-two-sorted-arrays.dart)
| [✔️](go%2F0004-median-of-two-sorted-arrays.go)
| ❌
| [✔️](java%2F0004-median-of-two-sorted-arrays.java)
| [✔️](javascript%2F0004-median-of-two-sorted-arrays.js)
| [✔️](kotlin%2F0004-median-of-two-sorted-arrays.kt)
| [✔️](python%2F0004-median-of-two-sorted-arrays.py)
| ❌
| [✔️](rust%2F0004-median-of-two-sorted-arrays.rs)
| ❌
| [✔️](swift%2F0004-median-of-two-sorted-arrays.swift)
| [✔️](typescript%2F0004-median-of-two-sorted-arrays.ts)
+
+### Linked List
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0206 - Reverse Linked List](https://leetcode.com/problems/reverse-linked-list/) | ❌
| [✔️](c%2F0206-reverse-linked-list.c)
| [✔️](cpp%2F0206-reverse-linked-list.cpp)
| [✔️](csharp%2F0206-reverse-linked-list.cs)
| [✔️](dart%2F0206-reverse-linked-list.dart)
| [✔️](go%2F0206-reverse-linked-list.go)
| ❌
| [✔️](java%2F0206-reverse-linked-list.java)
| [✔️](javascript%2F0206-reverse-linked-list.js)
| [✔️](kotlin%2F0206-reverse-linked-list.kt)
| [✔️](python%2F0206-reverse-linked-list.py)
| [✔️](ruby%2F0206-reverse-linked-list.rb)
| [✔️](rust%2F0206-reverse-linked-list.rs)
| [✔️](scala%2F0206-reverse-linked-list.scala)
| [✔️](swift%2F0206-reverse-linked-list.swift)
| [✔️](typescript%2F0206-reverse-linked-list.ts)
+[0021 - Merge Two Sorted Lists](https://leetcode.com/problems/merge-two-sorted-lists/) | ❌
| [✔️](c%2F0021-merge-two-sorted-lists.c)
| [✔️](cpp%2F0021-merge-two-sorted-lists.cpp)
| [✔️](csharp%2F0021-merge-two-sorted-lists.cs)
| [✔️](dart%2F0021-merge-two-sorted-lists.dart)
| [✔️](go%2F0021-merge-two-sorted-lists.go)
| ❌
| [✔️](java%2F0021-merge-two-sorted-lists.java)
| [✔️](javascript%2F0021-merge-two-sorted-lists.js)
| [✔️](kotlin%2F0021-merge-two-sorted-lists.kt)
| [✔️](python%2F0021-merge-two-sorted-lists.py)
| [✔️](ruby%2F0021-merge-two-sorted-lists.rb)
| [✔️](rust%2F0021-merge-two-sorted-lists.rs)
| [✔️](scala%2F0021-merge-two-sorted-lists.scala)
| [✔️](swift%2F0021-merge-two-sorted-lists.swift)
| [✔️](typescript%2F0021-merge-two-sorted-lists.ts)
+[0234 - Palindrome Linked List](https://leetcode.com/problems/palindrome-linked-list/) | ❌
| [✔️](c%2F0234-palindrome-linked-list.c)
| [✔️](cpp%2F0234-palindrome-linked-list.cpp)
| ❌
| ❌
| [✔️](go%2F0234-palindrome-linked-list.go)
| ❌
| [✔️](java%2F0234-palindrome-linked-list.java)
| [✔️](javascript%2F0234-palindrome-linked-list.js)
| [✔️](kotlin%2F0234-palindrome-linked-list.kt)
| [✔️](python%2F0234-palindrome-linked-list.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0203 - Remove Linked List Elements](https://leetcode.com/problems/remove-linked-list-elements/) | ❌
| ❌
| [✔️](cpp%2F0203-remove-linked-list-elements.cpp)
| [✔️](csharp%2F0203-remove-linked-list-elements.cs)
| ❌
| [✔️](go%2F0203-remove-linked-list-elements.go)
| ❌
| [✔️](java%2F0203-remove-linked-list-elements.java)
| [✔️](javascript%2F0203-remove-linked-list-elements.js)
| [✔️](kotlin%2F0203-remove-linked-list-elements.kt)
| [✔️](python%2F0203-remove-linked-list-elements.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F0203-remove-linked-list-elements.ts)
+[0083 - Remove Duplicates From Sorted List](https://leetcode.com/problems/remove-duplicates-from-sorted-list/) | ❌
| [✔️](c%2F0083-remove-duplicates-from-sorted-list.c)
| [✔️](cpp%2F0083-remove-duplicates-from-sorted-list.cpp)
| ❌
| ❌
| [✔️](go%2F0083-remove-duplicates-from-sorted-list.go)
| ❌
| [✔️](java%2F0083-remove-duplicates-from-sorted-list.java)
| [✔️](javascript%2F0083-remove-duplicates-from-sorted-list.js)
| [✔️](kotlin%2F0083-remove-duplicates-from-sorted-list.kt)
| [✔️](python%2F0083-remove-duplicates-from-sorted-list.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0083-remove-duplicates-from-sorted-list.swift)
| ❌
+[0876 - Middle of the Linked List](https://leetcode.com/problems/middle-of-the-linked-list/) | ❌
| [✔️](c%2F0876-middle-of-the-linked-list.c)
| [✔️](cpp%2F0876-middle-of-the-linked-list.cpp)
| [✔️](csharp%2F0876-middle-of-the-linked-list.cs)
| ❌
| [✔️](go%2F0876-middle-of-the-linked-list.go)
| ❌
| [✔️](java%2F0876-middle-of-the-linked-list.java)
| [✔️](javascript%2F0876-middle-of-the-linked-list.js)
| [✔️](kotlin%2F0876-middle-of-the-linked-list.kt)
| [✔️](python%2F0876-middle-of-the-linked-list.py)
| ❌
| [✔️](rust%2F0876-middle-of-the-linked-list.rs)
| ❌
| [✔️](swift%2F0876-middle-of-the-linked-list.swift)
| [✔️](typescript%2F0876-middle-of-the-linked-list.ts)
+[0160 - Intersection of Two Linked Lists](https://leetcode.com/problems/intersection-of-two-linked-lists/) | ❌
| [✔️](c%2F0160-intersection-of-two-linked-lists.c)
| [✔️](cpp%2F0160-intersection-of-two-linked-lists.cpp)
| ❌
| ❌
| [✔️](go%2F0160-intersection-of-two-linked-lists.go)
| ❌
| [✔️](java%2F0160-intersection-of-two-linked-lists.java)
| [✔️](javascript%2F0160-intersection-of-two-linked-lists.js)
| [✔️](kotlin%2F0160-intersection-of-two-linked-lists.kt)
| [✔️](python%2F0160-intersection-of-two-linked-lists.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0143 - Reorder List](https://leetcode.com/problems/reorder-list/) | ❌
| [✔️](c%2F0143-reorder-list.c)
| [✔️](cpp%2F0143-reorder-list.cpp)
| [✔️](csharp%2F0143-reorder-list.cs)
| ❌
| [✔️](go%2F0143-reorder-list.go)
| ❌
| [✔️](java%2F0143-reorder-list.java)
| [✔️](javascript%2F0143-reorder-list.js)
| [✔️](kotlin%2F0143-reorder-list.kt)
| [✔️](python%2F0143-reorder-list.py)
| ❌
| [✔️](rust%2F0143-reorder-list.rs)
| ❌
| [✔️](swift%2F0143-reorder-list.swift)
| [✔️](typescript%2F0143-reorder-list.ts)
+[2130 - Maximum Twin Sum Of A Linked List](https://leetcode.com/problems/maximum-twin-sum-of-a-linked-list/) | ❌
| ❌
| [✔️](cpp%2F2130-maximum-twin-sum-of-a-linked-list.cpp)
| ❌
| ❌
| [✔️](go%2F2130-maximum-twin-sum-of-a-linked-list.go)
| ❌
| [✔️](java%2F2130-maximum-twin-sum-of-a-linked-list.java)
| [✔️](javascript%2F2130-maximum-twin-sum-of-a-linked-list.js)
| [✔️](kotlin%2F2130-maximum-twin-sum-of-a-linked-list.kt)
| [✔️](python%2F2130-maximum-twin-sum-of-a-linked-list.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F2130-maximum-twin-sum-of-a-linked-list.swift)
| ❌
+[0019 - Remove Nth Node From End of List](https://leetcode.com/problems/remove-nth-node-from-end-of-list/) | ❌
| [✔️](c%2F0019-remove-nth-node-from-end-of-list.c)
| [✔️](cpp%2F0019-remove-nth-node-from-end-of-list.cpp)
| [✔️](csharp%2F0019-remove-nth-node-from-end-of-list.cs)
| ❌
| [✔️](go%2F0019-remove-nth-node-from-end-of-list.go)
| ❌
| [✔️](java%2F0019-remove-nth-node-from-end-of-list.java)
| [✔️](javascript%2F0019-remove-nth-node-from-end-of-list.js)
| [✔️](kotlin%2F0019-remove-nth-node-from-end-of-list.kt)
| [✔️](python%2F0019-remove-nth-node-from-end-of-list.py)
| ❌
| [✔️](rust%2F0019-remove-nth-node-from-end-of-list.rs)
| ❌
| [✔️](swift%2F0019-remove-nth-node-from-end-of-list.swift)
| [✔️](typescript%2F0019-remove-nth-node-from-end-of-list.ts)
+[1721 - Swapping Nodes in a Linked List](https://leetcode.com/problems/swapping-nodes-in-a-linked-list/) | ❌
| ❌
| [✔️](cpp%2F1721-swapping-nodes-in-a-linked-list.cpp)
| ❌
| ❌
| [✔️](go%2F1721-swapping-nodes-in-a-linked-list.go)
| ❌
| [✔️](java%2F1721-swapping-nodes-in-a-linked-list.java)
| ❌
| [✔️](kotlin%2F1721-swapping-nodes-in-a-linked-list.kt)
| [✔️](python%2F1721-swapping-nodes-in-a-linked-list.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0460 - LFU Cache](https://leetcode.com/problems/lfu-cache/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0460-lfu-cache.java)
| [✔️](javascript%2F0460-lfu-cache.js)
| [✔️](kotlin%2F0460-lfu-cache.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0138 - Copy List With Random Pointer](https://leetcode.com/problems/copy-list-with-random-pointer/) | ❌
| [✔️](c%2F0138-copy-list-with-random-pointer.c)
| [✔️](cpp%2F0138-copy-list-with-random-pointer.cpp)
| [✔️](csharp%2F0138-copy-list-with-random-pointer.cs)
| ❌
| [✔️](go%2F0138-copy-list-with-random-pointer.go)
| ❌
| [✔️](java%2F0138-copy-list-with-random-pointer.java)
| [✔️](javascript%2F0138-copy-list-with-random-pointer.js)
| [✔️](kotlin%2F0138-copy-list-with-random-pointer.kt)
| [✔️](python%2F0138-copy-list-with-random-pointer.py)
| [✔️](ruby%2F0138-copy-list-with-random-pointer.rb)
| ❌
| ❌
| [✔️](swift%2F0138-copy-list-with-random-pointer.swift)
| [✔️](typescript%2F0138-copy-list-with-random-pointer.ts)
+[0707 - Design Linked List](https://leetcode.com/problems/design-linked-list/) | ❌
| [✔️](c%2F0707-design-linked-list.c)
| ❌
| ❌
| ❌
| [✔️](go%2F0707-design-linked-list.go)
| ❌
| [✔️](java%2F0707-design-linked-list.java)
| [✔️](javascript%2F0707-design-linked-list.js)
| [✔️](kotlin%2F0707-design-linked-list.kt)
| [✔️](python%2F0707-design-linked-list.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0707-design-linked-list.swift)
| ❌
+[1472 - Design Browser History](https://leetcode.com/problems/design-browser-history/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F1472-design-browser-history.go)
| ❌
| [✔️](java%2F1472-design-browser-history.java)
| [✔️](javascript%2F1472-design-browser-history.js)
| [✔️](kotlin%2F1472-design-browser-history.kt)
| [✔️](python%2F1472-design-browser-history.py)
| ❌
| [✔️](rust%2F1472-design-browser-history.rs)
| ❌
| [✔️](swift%2F1472-design-browser-history.swift)
| [✔️](typescript%2F1472-design-browser-history.ts)
+[0002 - Add Two Numbers](https://leetcode.com/problems/add-two-numbers/) | ❌
| [✔️](c%2F0002-add-two-numbers.c)
| [✔️](cpp%2F0002-add-two-numbers.cpp)
| [✔️](csharp%2F0002-add-two-numbers.cs)
| [✔️](dart%2F0002-add-two-numbers.dart)
| [✔️](go%2F0002-add-two-numbers.go)
| ❌
| [✔️](java%2F0002-add-two-numbers.java)
| [✔️](javascript%2F0002-add-two-numbers.js)
| [✔️](kotlin%2F0002-add-two-numbers.kt)
| [✔️](python%2F0002-add-two-numbers.py)
| [✔️](ruby%2F0002-add-two-numbers.rb)
| [✔️](rust%2F0002-add-two-numbers.rs)
| [✔️](scala%2F0002-add-two-numbers.scala)
| [✔️](swift%2F0002-add-two-numbers.swift)
| [✔️](typescript%2F0002-add-two-numbers.ts)
+[0141 - Linked List Cycle](https://leetcode.com/problems/linked-list-cycle/) | ❌
| [✔️](c%2F0141-linked-list-cycle.c)
| [✔️](cpp%2F0141-linked-list-cycle.cpp)
| [✔️](csharp%2F0141-linked-list-cycle.cs)
| ❌
| [✔️](go%2F0141-linked-list-cycle.go)
| ❌
| [✔️](java%2F0141-linked-list-cycle.java)
| [✔️](javascript%2F0141-linked-list-cycle.js)
| [✔️](kotlin%2F0141-linked-list-cycle.kt)
| [✔️](python%2F0141-linked-list-cycle.py)
| [✔️](ruby%2F0141-linked-list-cycle.rb)
| ❌
| [✔️](scala%2F0141-linked-list-cycle.scala)
| [✔️](swift%2F0141-linked-list-cycle.swift)
| [✔️](typescript%2F0141-linked-list-cycle.ts)
+[0287 - Find The Duplicate Number](https://leetcode.com/problems/find-the-duplicate-number/) | ❌
| [✔️](c%2F0287-find-the-duplicate-number.c)
| [✔️](cpp%2F0287-find-the-duplicate-number.cpp)
| [✔️](csharp%2F0287-find-the-duplicate-number.cs)
| ❌
| [✔️](go%2F0287-find-the-duplicate-number.go)
| ❌
| [✔️](java%2F0287-find-the-duplicate-number.java)
| [✔️](javascript%2F0287-find-the-duplicate-number.js)
| [✔️](kotlin%2F0287-find-the-duplicate-number.kt)
| [✔️](python%2F0287-find-the-duplicate-number.py)
| [✔️](ruby%2F0287-find-the-duplicate-number.rb)
| [✔️](rust%2F0287-find-the-duplicate-number.rs)
| ❌
| [✔️](swift%2F0287-find-the-duplicate-number.swift)
| [✔️](typescript%2F0287-find-the-duplicate-number.ts)
+[0024 - Swap Nodes In Pairs](https://leetcode.com/problems/swap-nodes-in-pairs/) | ❌
| [✔️](c%2F0024-swap-nodes-in-pairs.c)
| [✔️](cpp%2F0024-swap-nodes-in-pairs.cpp)
| ❌
| ❌
| [✔️](go%2F0024-swap-nodes-in-pairs.go)
| ❌
| [✔️](java%2F0024-swap-nodes-in-pairs.java)
| ❌
| [✔️](kotlin%2F0024-swap-nodes-in-pairs.kt)
| [✔️](python%2F0024-swap-nodes-in-pairs.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0148 - Sort List](https://leetcode.com/problems/sort-list/) | ❌
| [✔️](c%2F0148-sort-list.c)
| [✔️](cpp%2F0148-sort-list.cpp)
| [✔️](csharp%2F0148-sort-list.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0148-sort-list.java)
| ❌
| [✔️](kotlin%2F0148-sort-list.kt)
| [✔️](python%2F0148-sort-list.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0086 - Partition List](https://leetcode.com/problems/partition-list/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0086-partition-list.java)
| ❌
| [✔️](kotlin%2F0086-partition-list.kt)
| [✔️](python%2F0086-partition-list.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0061 - Rotate List](https://leetcode.com/problems/rotate-list/) | ❌
| ❌
| [✔️](cpp%2F0061-rotate-list.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0061-rotate-list.java)
| ❌
| [✔️](kotlin%2F0061-rotate-list.kt)
| [✔️](python%2F0061-rotate-list.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0092 - Reverse Linked List II](https://leetcode.com/problems/reverse-linked-list-ii/) | ❌
| ❌
| [✔️](cpp%2F0092-reverse-linked-list-ii.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0092-reverse-linked-list-ii.java)
| [✔️](javascript%2F0092-reverse-linked-list-ii.js)
| [✔️](kotlin%2F0092-reverse-linked-list-ii.kt)
| [✔️](python%2F0092-reverse-linked-list-ii.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0622 - Design Circular Queue](https://leetcode.com/problems/design-circular-queue/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F0622-design-circular-queue.go)
| ❌
| [✔️](java%2F0622-design-circular-queue.java)
| ❌
| [✔️](kotlin%2F0622-design-circular-queue.kt)
| [✔️](python%2F0622-design-circular-queue.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0147 - Insertion Sort List](https://leetcode.com/problems/insertion-sort-list/) | ❌
| ❌
| [✔️](cpp%2F0147-insertion-sort-list.cpp)
| ❌
| ❌
| [✔️](go%2F0147-insertion-sort-list.go)
| ❌
| [✔️](java%2F0147-insertion-sort-list.java)
| ❌
| [✔️](kotlin%2F0147-insertion-sort-list.kt)
| [✔️](python%2F0147-insertion-sort-list.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0725 - Split Linked List in Parts](https://leetcode.com/problems/split-linked-list-in-parts/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0725-split-linked-list-in-parts.java)
| ❌
| [✔️](kotlin%2F0725-split-linked-list-in-parts.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0146 - LRU Cache](https://leetcode.com/problems/lru-cache/) | ❌
| [✔️](c%2F0146-lru-cache.c)
| [✔️](cpp%2F0146-lru-cache.cpp)
| [✔️](csharp%2F0146-lru-cache.cs)
| ❌
| [✔️](go%2F0146-lru-cache.go)
| ❌
| [✔️](java%2F0146-lru-cache.java)
| [✔️](javascript%2F0146-lru-cache.js)
| [✔️](kotlin%2F0146-lru-cache.kt)
| [✔️](python%2F0146-lru-cache.py)
| [✔️](ruby%2F0146-lru-cache.rb)
| ❌
| ❌
| [✔️](swift%2F0146-lru-cache.swift)
| [✔️](typescript%2F0146-lru-cache.ts)
+[0023 - Merge K Sorted Lists](https://leetcode.com/problems/merge-k-sorted-lists/) | ❌
| [✔️](c%2F0023-merge-k-sorted-lists.c)
| [✔️](cpp%2F0023-merge-k-sorted-lists.cpp)
| [✔️](csharp%2F0023-merge-k-sorted-lists.cs)
| ❌
| [✔️](go%2F0023-merge-k-sorted-lists.go)
| ❌
| [✔️](java%2F0023-merge-k-sorted-lists.java)
| [✔️](javascript%2F0023-merge-k-sorted-lists.js)
| [✔️](kotlin%2F0023-merge-k-sorted-lists.kt)
| [✔️](python%2F0023-merge-k-sorted-lists.py)
| ❌
| [✔️](rust%2F0023-merge-k-sorted-lists.rs)
| ❌
| [✔️](swift%2F0023-merge-k-sorted-lists.swift)
| [✔️](typescript%2F0023-merge-k-sorted-lists.ts)
+[0025 - Reverse Nodes In K Group](https://leetcode.com/problems/reverse-nodes-in-k-group/) | ❌
| [✔️](c%2F0025-reverse-nodes-in-k-group.c)
| [✔️](cpp%2F0025-reverse-nodes-in-k-group.cpp)
| [✔️](csharp%2F0025-reverse-nodes-in-k-group.cs)
| ❌
| [✔️](go%2F0025-reverse-nodes-in-k-group.go)
| ❌
| [✔️](java%2F0025-reverse-nodes-in-k-group.java)
| [✔️](javascript%2F0025-reverse-nodes-in-k-group.js)
| [✔️](kotlin%2F0025-reverse-nodes-in-k-group.kt)
| [✔️](python%2F0025-reverse-nodes-in-k-group.py)
| ❌
| [✔️](rust%2F0025-reverse-nodes-in-k-group.rs)
| ❌
| [✔️](swift%2F0025-reverse-nodes-in-k-group.swift)
| [✔️](typescript%2F0025-reverse-nodes-in-k-group.ts)
+
+### Trees
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0094 - Binary Tree Inorder Traversal](https://leetcode.com/problems/binary-tree-inorder-traversal/) | ❌
| [✔️](c%2F0094-binary-tree-inorder-traversal.c)
| [✔️](cpp%2F0094-binary-tree-inorder-traversal.cpp)
| [✔️](csharp%2F0094-binary-tree-inorder-traversal.cs)
| ❌
| [✔️](go%2F0094-binary-tree-inorder-traversal.go)
| ❌
| [✔️](java%2F0094-binary-tree-inorder-traversal.java)
| [✔️](javascript%2F0094-binary-tree-inorder-traversal.js)
| [✔️](kotlin%2F0094-binary-tree-inorder-traversal.kt)
| [✔️](python%2F0094-binary-tree-inorder-traversal.py)
| [✔️](ruby%2F0094-binary-tree-inorder-traversal.rb)
| [✔️](rust%2F0094-binary-tree-inorder-traversal.rs)
| ❌
| [✔️](swift%2F0094-binary-tree-inorder-traversal.swift)
| [✔️](typescript%2F0094-binary-tree-inorder-traversal.ts)
+[0144 - Binary Tree Preorder Traversal](https://leetcode.com/problems/binary-tree-preorder-traversal/) | ❌
| ❌
| [✔️](cpp%2F0144-binary-tree-preorder-traversal.cpp)
| [✔️](csharp%2F0144-binary-tree-preorder-traversal.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0144-binary-tree-preorder-traversal.java)
| [✔️](javascript%2F0144-binary-tree-preorder-traversal.js)
| [✔️](kotlin%2F0144-binary-tree-preorder-traversal.kt)
| [✔️](python%2F0144-binary-tree-preorder-traversal.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0144-binary-tree-preorder-traversal.swift)
| [✔️](typescript%2F0144-binary-tree-preorder-traversal.ts)
+[0145 - Binary Tree Postorder Traversal](https://leetcode.com/problems/binary-tree-postorder-traversal/) | ❌
| ❌
| [✔️](cpp%2F0145-binary-tree-postorder-traversal.cpp)
| [✔️](csharp%2F0145-binary-tree-postorder-traversal.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0145-binary-tree-postorder-traversal.java)
| [✔️](javascript%2F0145-binary-tree-postorder-traversal.js)
| [✔️](kotlin%2F0145-binary-tree-postorder-traversal.kt)
| [✔️](python%2F0145-binary-tree-postorder-traversal.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0145-binary-tree-postorder-traversal.swift)
| [✔️](typescript%2F0145-binary-tree-postorder-traversal.ts)
+[0226 - Invert Binary Tree](https://leetcode.com/problems/invert-binary-tree/) | ❌
| [✔️](c%2F0226-invert-binary-tree.c)
| [✔️](cpp%2F0226-invert-binary-tree.cpp)
| [✔️](csharp%2F0226-invert-binary-tree.cs)
| [✔️](dart%2F0226-invert-binary-tree.dart)
| [✔️](go%2F0226-invert-binary-tree.go)
| ❌
| [✔️](java%2F0226-invert-binary-tree.java)
| [✔️](javascript%2F0226-invert-binary-tree.js)
| [✔️](kotlin%2F0226-invert-binary-tree.kt)
| [✔️](python%2F0226-invert-binary-tree.py)
| [✔️](ruby%2F0226-invert-binary-tree.rb)
| [✔️](rust%2F0226-invert-binary-tree.rs)
| ❌
| [✔️](swift%2F0226-invert-binary-tree.swift)
| [✔️](typescript%2F0226-invert-binary-tree.ts)
+[0104 - Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree/) | ❌
| [✔️](c%2F0104-maximum-depth-of-binary-tree.c)
| [✔️](cpp%2F0104-maximum-depth-of-binary-tree.cpp)
| [✔️](csharp%2F0104-maximum-depth-of-binary-tree.cs)
| ❌
| [✔️](go%2F0104-maximum-depth-of-binary-tree.go)
| ❌
| [✔️](java%2F0104-maximum-depth-of-binary-tree.java)
| [✔️](javascript%2F0104-maximum-depth-of-binary-tree.js)
| [✔️](kotlin%2F0104-maximum-depth-of-binary-tree.kt)
| [✔️](python%2F0104-maximum-depth-of-binary-tree.py)
| [✔️](ruby%2F0104-maximum-depth-of-binary-tree.rb)
| [✔️](rust%2F0104-maximum-depth-of-binary-tree.rs)
| ❌
| [✔️](swift%2F0104-maximum-depth-of-binary-tree.swift)
| [✔️](typescript%2F0104-maximum-depth-of-binary-tree.ts)
+[0543 - Diameter of Binary Tree](https://leetcode.com/problems/diameter-of-binary-tree/) | ❌
| [✔️](c%2F0543-diameter-of-binary-tree.c)
| [✔️](cpp%2F0543-diameter-of-binary-tree.cpp)
| [✔️](csharp%2F0543-diameter-of-binary-tree.cs)
| ❌
| [✔️](go%2F0543-diameter-of-binary-tree.go)
| ❌
| [✔️](java%2F0543-diameter-of-binary-tree.java)
| [✔️](javascript%2F0543-diameter-of-binary-tree.js)
| [✔️](kotlin%2F0543-diameter-of-binary-tree.kt)
| [✔️](python%2F0543-diameter-of-binary-tree.py)
| [✔️](ruby%2F0543-diameter-of-binary-tree.rb)
| [✔️](rust%2F0543-diameter-of-binary-tree.rs)
| ❌
| [✔️](swift%2F0543-diameter-of-binary-tree.swift)
| [✔️](typescript%2F0543-diameter-of-binary-tree.ts)
+[0110 - Balanced Binary Tree](https://leetcode.com/problems/balanced-binary-tree/) | ❌
| [✔️](c%2F0110-balanced-binary-tree.c)
| [✔️](cpp%2F0110-balanced-binary-tree.cpp)
| [✔️](csharp%2F0110-balanced-binary-tree.cs)
| ❌
| [✔️](go%2F0110-balanced-binary-tree.go)
| ❌
| [✔️](java%2F0110-balanced-binary-tree.java)
| [✔️](javascript%2F0110-balanced-binary-tree.js)
| [✔️](kotlin%2F0110-balanced-binary-tree.kt)
| [✔️](python%2F0110-balanced-binary-tree.py)
| [✔️](ruby%2F0110-balanced-binary-tree.rb)
| [✔️](rust%2F0110-balanced-binary-tree.rs)
| ❌
| [✔️](swift%2F0110-balanced-binary-tree.swift)
| [✔️](typescript%2F0110-balanced-binary-tree.ts)
+[0100 - Same Tree](https://leetcode.com/problems/same-tree/) | ❌
| [✔️](c%2F0100-same-tree.c)
| [✔️](cpp%2F0100-same-tree.cpp)
| [✔️](csharp%2F0100-same-tree.cs)
| ❌
| [✔️](go%2F0100-same-tree.go)
| ❌
| [✔️](java%2F0100-same-tree.java)
| [✔️](javascript%2F0100-same-tree.js)
| [✔️](kotlin%2F0100-same-tree.kt)
| [✔️](python%2F0100-same-tree.py)
| [✔️](ruby%2F0100-same-tree.rb)
| [✔️](rust%2F0100-same-tree.rs)
| ❌
| [✔️](swift%2F0100-same-tree.swift)
| [✔️](typescript%2F0100-same-tree.ts)
+[0572 - Subtree of Another Tree](https://leetcode.com/problems/subtree-of-another-tree/) | ❌
| [✔️](c%2F0572-subtree-of-another-tree.c)
| [✔️](cpp%2F0572-subtree-of-another-tree.cpp)
| [✔️](csharp%2F0572-subtree-of-another-tree.cs)
| ❌
| [✔️](go%2F0572-subtree-of-another-tree.go)
| ❌
| [✔️](java%2F0572-subtree-of-another-tree.java)
| [✔️](javascript%2F0572-subtree-of-another-tree.js)
| [✔️](kotlin%2F0572-subtree-of-another-tree.kt)
| [✔️](python%2F0572-subtree-of-another-tree.py)
| [✔️](ruby%2F0572-subtree-of-another-tree.rb)
| [✔️](rust%2F0572-subtree-of-another-tree.rs)
| [✔️](scala%2F0572-subtree-of-another-tree.scala)
| [✔️](swift%2F0572-subtree-of-another-tree.swift)
| [✔️](typescript%2F0572-subtree-of-another-tree.ts)
+[0108 - Convert Sorted Array to Binary Search Tree](https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/) | ❌
| [✔️](c%2F0108-convert-sorted-array-to-binary-search-tree.c)
| ❌
| ❌
| ❌
| [✔️](go%2F0108-convert-sorted-array-to-binary-search-tree.go)
| ❌
| [✔️](java%2F0108-convert-sorted-array-to-binary-search-tree.java)
| [✔️](javascript%2F0108-convert-sorted-array-to-binary-search-tree.js)
| [✔️](kotlin%2F0108-convert-sorted-array-to-binary-search-tree.kt)
| [✔️](python%2F0108-convert-sorted-array-to-binary-search-tree.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0617 - Merge Two Binary Trees](https://leetcode.com/problems/merge-two-binary-trees/) | ❌
| [✔️](c%2F0617-merge-two-binary-trees.c)
| [✔️](cpp%2F0617-merge-two-binary-trees.cpp)
| [✔️](csharp%2F0617-merge-two-binary-trees.cs)
| [✔️](dart%2F0617-merge-two-binary-trees.dart)
| [✔️](go%2F0617-merge-two-binary-trees.go)
| ❌
| [✔️](java%2F0617-merge-two-binary-trees.java)
| [✔️](javascript%2F0617-merge-two-binary-trees.js)
| [✔️](kotlin%2F0617-merge-two-binary-trees.kt)
| [✔️](python%2F0617-merge-two-binary-trees.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0112 - Path Sum](https://leetcode.com/problems/path-sum/) | ❌
| [✔️](c%2F0112-path-sum.c)
| [✔️](cpp%2F0112-path-sum.cpp)
| [✔️](csharp%2F0112-path-sum.cs)
| ❌
| [✔️](go%2F0112-path-sum.go)
| ❌
| [✔️](java%2F0112-path-sum.java)
| [✔️](javascript%2F0112-path-sum.js)
| [✔️](kotlin%2F0112-path-sum.kt)
| [✔️](python%2F0112-path-sum.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0112-path-sum.swift)
| ❌
+[0606 - Construct String From Binary Tree](https://leetcode.com/problems/construct-string-from-binary-tree/) | ❌
| ❌
| [✔️](cpp%2F0606-construct-string-from-binary-tree.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0606-construct-string-from-binary-tree.java)
| [✔️](javascript%2F0606-construct-string-from-binary-tree.js)
| [✔️](kotlin%2F0606-construct-string-from-binary-tree.kt)
| [✔️](python%2F0606-construct-string-from-binary-tree.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0235 - Lowest Common Ancestor of a Binary Search Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/) | ❌
| [✔️](c%2F0235-lowest-common-ancestor-of-a-binary-search-tree.c)
| [✔️](cpp%2F0235-lowest-common-ancestor-of-a-binary-search-tree.cpp)
| [✔️](csharp%2F0235-lowest-common-ancestor-of-a-binary-search-tree.cs)
| ❌
| [✔️](go%2F0235-lowest-common-ancestor-of-a-binary-search-tree.go)
| ❌
| [✔️](java%2F0235-lowest-common-ancestor-of-a-binary-search-tree.java)
| [✔️](javascript%2F0235-lowest-common-ancestor-of-a-binary-search-tree.js)
| [✔️](kotlin%2F0235-lowest-common-ancestor-of-a-binary-search-tree.kt)
| [✔️](python%2F0235-lowest-common-ancestor-of-a-binary-search-tree.py)
| [✔️](ruby%2F0235-lowest-common-ancestor-of-a-binary-search-tree.rb)
| [✔️](rust%2F0235-lowest-common-ancestor-of-a-binary-search-tree.rs)
| [✔️](scala%2F0235-lowest-common-ancestor-of-a-binary-search-tree.scala)
| [✔️](swift%2F0235-lowest-common-ancestor-of-a-binary-search-tree.swift)
| [✔️](typescript%2F0235-lowest-common-ancestor-of-a-binary-search-tree.ts)
+[0701 - Insert into a Binary Search Tree](https://leetcode.com/problems/insert-into-a-binary-search-tree/) | ❌
| ❌
| [✔️](cpp%2F0701-insert-into-a-binary-search-tree.cpp)
| [✔️](csharp%2F0701-insert-into-a-binary-search-tree.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0701-insert-into-a-binary-search-tree.java)
| [✔️](javascript%2F0701-insert-into-a-binary-search-tree.js)
| [✔️](kotlin%2F0701-insert-into-a-binary-search-tree.kt)
| [✔️](python%2F0701-insert-into-a-binary-search-tree.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0701-insert-into-a-binary-search-tree.swift)
| [✔️](typescript%2F0701-insert-into-a-binary-search-tree.ts)
+[0450 - Delete Node in a BST](https://leetcode.com/problems/delete-node-in-a-bst/) | ❌
| ❌
| [✔️](cpp%2F0450-delete-node-in-a-bst.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0450-delete-node-in-a-bst.java)
| [✔️](javascript%2F0450-delete-node-in-a-bst.js)
| [✔️](kotlin%2F0450-delete-node-in-a-bst.kt)
| [✔️](python%2F0450-delete-node-in-a-bst.py)
| ❌
| [✔️](rust%2F0450-delete-node-in-a-bst.rs)
| ❌
| [✔️](swift%2F0450-delete-node-in-a-bst.swift)
| [✔️](typescript%2F0450-delete-node-in-a-bst.ts)
+[0102 - Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal/) | ❌
| [✔️](c%2F0102-binary-tree-level-order-traversal.c)
| [✔️](cpp%2F0102-binary-tree-level-order-traversal.cpp)
| [✔️](csharp%2F0102-binary-tree-level-order-traversal.cs)
| ❌
| [✔️](go%2F0102-binary-tree-level-order-traversal.go)
| ❌
| [✔️](java%2F0102-binary-tree-level-order-traversal.java)
| [✔️](javascript%2F0102-binary-tree-level-order-traversal.js)
| [✔️](kotlin%2F0102-binary-tree-level-order-traversal.kt)
| [✔️](python%2F0102-binary-tree-level-order-traversal.py)
| [✔️](ruby%2F0102-binary-tree-level-order-traversal.rb)
| [✔️](rust%2F0102-binary-tree-level-order-traversal.rs)
| ❌
| [✔️](swift%2F0102-binary-tree-level-order-traversal.swift)
| [✔️](typescript%2F0102-binary-tree-level-order-traversal.ts)
+[0199 - Binary Tree Right Side View](https://leetcode.com/problems/binary-tree-right-side-view/) | ❌
| [✔️](c%2F0199-binary-tree-right-side-view.c)
| [✔️](cpp%2F0199-binary-tree-right-side-view.cpp)
| [✔️](csharp%2F0199-binary-tree-right-side-view.cs)
| ❌
| [✔️](go%2F0199-binary-tree-right-side-view.go)
| ❌
| [✔️](java%2F0199-binary-tree-right-side-view.java)
| [✔️](javascript%2F0199-binary-tree-right-side-view.js)
| [✔️](kotlin%2F0199-binary-tree-right-side-view.kt)
| [✔️](python%2F0199-binary-tree-right-side-view.py)
| ❌
| [✔️](rust%2F0199-binary-tree-right-side-view.rs)
| ❌
| [✔️](swift%2F0199-binary-tree-right-side-view.swift)
| [✔️](typescript%2F0199-binary-tree-right-side-view.ts)
+[0783 - Minimum Distance between BST Nodes](https://leetcode.com/problems/minimum-distance-between-bst-nodes/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0783-minimum-distance-between-bst-nodes.java)
| [✔️](javascript%2F0783-minimum-distance-between-bst-nodes.js)
| [✔️](kotlin%2F0783-minimum-distance-between-bst-nodes.kt)
| [✔️](python%2F0783-minimum-distance-between-bst-nodes.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0101 - Symmetric Tree ](https://leetcode.com/problems/symmetric-tree/) | ❌
| ❌
| [✔️](cpp%2F0101-symmetric-tree.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0101-symmetric-tree.java)
| [✔️](javascript%2F0101-symmetric-tree.js)
| [✔️](kotlin%2F0101-symmetric-tree.kt)
| [✔️](python%2F0101-symmetric-tree.py)
| ❌
| [✔️](rust%2F0101-symmetric-tree.rs)
| ❌
| ❌
| ❌
+[1443 - Minimum Time to Collect All Apples in a Tree](https://leetcode.com/problems/minimum-time-to-collect-all-apples-in-a-tree/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F1443-minimum-time-to-collect-all-apples-in-a-tree.js)
| [✔️](kotlin%2F1443-minimum-time-to-collect-all-apples-in-a-tree.kt)
| ❌
| ❌
| [✔️](rust%2F1443-minimum-time-to-collect-all-apples-in-a-tree.rs)
| ❌
| ❌
| ❌
+[0103 - Binary Tree Zigzag Level Order Traversal](https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/) | ❌
| ❌
| [✔️](cpp%2F0103-binary-tree-zigzag-level-order-traversal.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0103-binary-tree-zigzag-level-order-traversal.java)
| [✔️](javascript%2F0103-binary-tree-zigzag-level-order-traversal.js)
| [✔️](kotlin%2F0103-binary-tree-zigzag-level-order-traversal.kt)
| [✔️](python%2F0103-binary-tree-zigzag-level-order-traversal.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0427 - Construct Quad Tree](https://leetcode.com/problems/construct-quad-tree/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0427-construct-quad-tree.java)
| ❌
| [✔️](kotlin%2F0427-construct-quad-tree.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0652 - Find Duplicate Subtrees](https://leetcode.com/problems/find-duplicate-subtrees/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F0652-find-duplicate-subtrees.js)
| [✔️](kotlin%2F0652-find-duplicate-subtrees.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0958 - Check Completeness of a Binary Tree](https://leetcode.com/problems/check-completeness-of-a-binary-tree/) | ❌
| ❌
| [✔️](cpp%2F0958-check-completeness-of-a-binary-tree.cpp)
| [✔️](csharp%2F0958-check-completeness-of-a-binary-tree.cs)
| ❌
| [✔️](go%2F0958-check-completeness-of-a-binary-tree.go)
| ❌
| ❌
| [✔️](javascript%2F0958-check-completeness-of-a-binary-tree.js)
| [✔️](kotlin%2F0958-check-completeness-of-a-binary-tree.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0106 - Construct Binary Tree from Inorder and Postorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0106-construct-binary-tree-from-inorder-and-postorder-traversal.java)
| [✔️](javascript%2F0106-construct-binary-tree-from-inorder-and-postorder-traversal.js)
| [✔️](kotlin%2F0106-construct-binary-tree-from-inorder-and-postorder-traversal.kt)
| [✔️](python%2F0106-construct-binary-tree-from-inorder-and-postorder-traversal.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0662 - Maximum Width of Binary Tree ](https://leetcode.com/problems/maximum-width-of-binary-tree/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0662-maximum-width-of-binary-tree.java)
| ❌
| [✔️](kotlin%2F0662-maximum-width-of-binary-tree.kt)
| [✔️](python%2F0662-maximum-width-of-binary-tree.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1376 - Time Needed to Inform All Employees ](https://leetcode.com/problems/time-needed-to-inform-all-employees/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1376-time-needed-to-inform-all-employees.java)
| [✔️](javascript%2F1376-time-needed-to-inform-all-employees.js)
| [✔️](kotlin%2F1376-time-needed-to-inform-all-employees.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1448 - Count Good Nodes In Binary Tree](https://leetcode.com/problems/count-good-nodes-in-binary-tree/) | ❌
| [✔️](c%2F1448-Count-Good-Nodes-in-Binary-Tree.c)
| [✔️](cpp%2F1448-Count-Good-Nodes-In-Binary-Tree.cpp)
| [✔️](csharp%2F1448-Count-Good-Nodes-in-Binary-Tree.cs)
| ❌
| [✔️](go%2F1448-count-good-nodes-in-binary-tree.go)
| ❌
| [✔️](java%2F1448-Count-Good-Nodes-in-Binary-Tree.java)
| [✔️](javascript%2F1448-Count-Good-Nodes-in-Binary-Tree.js)
| [✔️](kotlin%2F1448-Count-Good-Nodes-In-Binary-Tree.kt)
| [✔️](python%2F1448-count-good-nodes-in-binary-tree.py)
| ❌
| [✔️](rust%2F1448-count-good-nodes-in-binary-tree.rs)
| ❌
| [✔️](swift%2F1448-count-good-nodes-in-binary-tree.swift)
| [✔️](typescript%2F1448-Count-Good-Nodes-in-Binary-Tree.ts)
+[0098 - Validate Binary Search Tree](https://leetcode.com/problems/validate-binary-search-tree/) | ❌
| [✔️](c%2F0098-validate-binary-search-tree.c)
| [✔️](cpp%2F0098-validate-binary-search-tree.cpp)
| [✔️](csharp%2F0098-validate-binary-search-tree.cs)
| ❌
| [✔️](go%2F0098-validate-binary-search-tree.go)
| ❌
| [✔️](java%2F0098-validate-binary-search-tree.java)
| [✔️](javascript%2F0098-validate-binary-search-tree.js)
| [✔️](kotlin%2F0098-validate-binary-search-tree.kt)
| [✔️](python%2F0098-validate-binary-search-tree.py)
| ❌
| [✔️](rust%2F0098-validate-binary-search-tree.rs)
| ❌
| [✔️](swift%2F0098-validate-binary-search-tree.swift)
| [✔️](typescript%2F0098-validate-binary-search-tree.ts)
+[0230 - Kth Smallest Element In a Bst](https://leetcode.com/problems/kth-smallest-element-in-a-bst/) | ❌
| [✔️](c%2F0230-kth-smallest-element-in-a-bst.c)
| [✔️](cpp%2F0230-kth-smallest-element-in-a-bst.cpp)
| [✔️](csharp%2F0230-kth-smallest-element-in-a-bst.cs)
| ❌
| [✔️](go%2F0230-kth-smallest-element-in-a-bst.go)
| ❌
| [✔️](java%2F0230-kth-smallest-element-in-a-bst.java)
| [✔️](javascript%2F0230-kth-smallest-element-in-a-bst.js)
| [✔️](kotlin%2F0230-kth-smallest-element-in-a-bst.kt)
| [✔️](python%2F0230-kth-smallest-element-in-a-bst.py)
| ❌
| [✔️](rust%2F0230-kth-smallest-element-in-a-bst.rs)
| [✔️](scala%2F0230-kth-smallest-element-in-a-bst.scala)
| [✔️](swift%2F0230-kth-smallest-element-in-a-bst.swift)
| [✔️](typescript%2F0230-kth-smallest-element-in-a-bst.ts)
+[0105 - Construct Binary Tree From Preorder And Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | ❌
| [✔️](c%2F0105-construct-binary-tree-from-preorder-and-inorder-traversal.c)
| [✔️](cpp%2F0105-construct-binary-tree-from-preorder-and-inorder-traversal.cpp)
| [✔️](csharp%2F0105-construct-binary-tree-from-preorder-and-inorder-traversal.cs)
| ❌
| [✔️](go%2F0105-construct-binary-tree-from-preorder-and-inorder-traversal.go)
| ❌
| [✔️](java%2F0105-construct-binary-tree-from-preorder-and-inorder-traversal.java)
| [✔️](javascript%2F0105-construct-binary-tree-from-preorder-and-inorder-traversal.js)
| [✔️](kotlin%2F0105-construct-binary-tree-from-preorder-and-inorder-traversal.kt)
| [✔️](python%2F0105-construct-binary-tree-from-preorder-and-inorder-traversal.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0105-construct-binary-tree-from-preorder-and-inorder-traversal.swift)
| [✔️](typescript%2F0105-construct-binary-tree-from-preorder-and-inorder-traversal.ts)
+[0096 - Unique Binary Search Trees](https://leetcode.com/problems/unique-binary-search-trees/) | ❌
| [✔️](c%2F0096-unique-binary-search-trees.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0096-unique-binary-search-trees.java)
| [✔️](javascript%2F0096-unique-binary-search-trees.js)
| [✔️](kotlin%2F0096-unique-binary-search-trees.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0095 - Unique Binary Search Trees II](https://leetcode.com/problems/unique-binary-search-trees-ii/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0095-unique-binary-search-trees-ii.java)
| [✔️](javascript%2F0095-unique-binary-search-trees-ii.js)
| [✔️](kotlin%2F0095-unique-binary-search-trees-ii.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0129 - Sum Root to Leaf Numbers](https://leetcode.com/problems/sum-root-to-leaf-numbers/) | ❌
| [✔️](c%2F0129-sum-root-to-leaf-numbers.c)
| [✔️](cpp%2F0129-sum-root-to-leaf-numbers.cpp)
| ❌
| ❌
| [✔️](go%2F0129-sum-root-to-leaf-numbers.go)
| ❌
| [✔️](java%2F0129-sum-root-to-leaf-numbers.java)
| [✔️](javascript%2F0129-sum-root-to-leaf-numbers.js)
| [✔️](kotlin%2F0129-sum-root-to-leaf-numbers.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0337 - House Robber III](https://leetcode.com/problems/house-robber-iii/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0337-house-robber-iii.java)
| [✔️](javascript%2F0337-house-robber-iii.js)
| [✔️](kotlin%2F0337-house-robber-iii.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0951 - Flip Equivalent Binary Trees](https://leetcode.com/problems/flip-equivalent-binary-trees/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0951-flip-equivalent-binary-trees.java)
| [✔️](javascript%2F0951-flip-equivalent-binary-trees.js)
| [✔️](kotlin%2F0951-flip-equivalent-binary-trees.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1993 - Operations On Tree](https://leetcode.com/problems/operations-on-tree/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1993-operations-on-tree.java)
| [✔️](javascript%2F1993-operations-on-tree.js)
| [✔️](kotlin%2F1993-operations-on-tree.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0894 - All Possible Full Binary Trees](https://leetcode.com/problems/all-possible-full-binary-trees/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0894-all-possible-full-binary-trees.java)
| [✔️](javascript%2F0894-all-possible-full-binary-trees.js)
| [✔️](kotlin%2F0894-all-possible-full-binary-trees.kt)
| [✔️](python%2F0894-all-possible-full-binary-trees.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0513 - Find Bottom Left Tree Value](https://leetcode.com/problems/find-bottom-left-tree-value/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0513-find-bottom-left-tree-value.java)
| [✔️](javascript%2F0513-find-bottom-left-tree-value.js)
| [✔️](kotlin%2F0513-find-bottom-left-tree-value.kt)
| [✔️](python%2F0513-find-bottom-left-tree-value.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0669 - Trim a Binary Search Tree](https://leetcode.com/problems/trim-a-binary-search-tree/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F0669-trim-a-binary-search-tree.go)
| ❌
| [✔️](java%2F0669-trim-a-binary-search-tree.java)
| [✔️](javascript%2F0669-trim-a-binary-search-tree.js)
| [✔️](kotlin%2F0669-trim-a-binary-search-tree.kt)
| [✔️](python%2F0669-trim-a-binary-search-tree.py)
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F0669-trim-a-binary-search-tree.ts)
+[0173 - Binary Search Tree Iterator](https://leetcode.com/problems/binary-search-tree-iterator/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0173-binary-search-tree-iterator.java)
| [✔️](javascript%2F0173-binary-search-tree-iterator.js)
| [✔️](kotlin%2F0173-binary-search-tree-iterator.kt)
| ❌
| ❌
| ❌
| ❌
| [✔️](swift%2F0173-binary-search-tree-iterator.swift)
| ❌
+[0538 - Convert Bst to Greater Tree](https://leetcode.com/problems/convert-bst-to-greater-tree/) | ❌
| ❌
| [✔️](cpp%2F0538-convert-bst-to-greater-tree.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0538-convert-bst-to-greater-tree.java)
| [✔️](javascript%2F0538-convert-bst-to-greater-tree.js)
| [✔️](kotlin%2F0538-convert-bst-to-greater-tree.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0124 - Binary Tree Maximum Path Sum](https://leetcode.com/problems/binary-tree-maximum-path-sum/) | ❌
| [✔️](c%2F0124-binary-tree-maximum-path-sum.c)
| [✔️](cpp%2F0124-binary-tree-maximum-path-sum.cpp)
| [✔️](csharp%2F0124-binary-tree-maximum-path-sum.cs)
| ❌
| [✔️](go%2F0124-binary-tree-maximum-path-sum.go)
| ❌
| [✔️](java%2F0124-binary-tree-maximum-path-sum.java)
| [✔️](javascript%2F0124-binary-tree-maximum-path-sum.js)
| [✔️](kotlin%2F0124-binary-tree-maximum-path-sum.kt)
| [✔️](python%2F0124-binary-tree-maximum-path-sum.py)
| ❌
| [✔️](rust%2F0124-binary-tree-maximum-path-sum.rs)
| ❌
| [✔️](swift%2F0124-binary-tree-maximum-path-sum.swift)
| [✔️](typescript%2F0124-binary-tree-maximum-path-sum.ts)
+[0297 - Serialize And Deserialize Binary Tree](https://leetcode.com/problems/serialize-and-deserialize-binary-tree/) | ❌
| [✔️](c%2F0297-serialize-and-deserialize-binary-tree.c)
| [✔️](cpp%2F0297-serialize-and-deserialize-binary-tree.cpp)
| [✔️](csharp%2F0297-serialize-and-deserialize-binary-tree.cs)
| ❌
| [✔️](go%2F0297-serialize-and-deserialize-binary-tree.go)
| ❌
| [✔️](java%2F0297-serialize-and-deserialize-binary-tree.java)
| [✔️](javascript%2F0297-serialize-and-deserialize-binary-tree.js)
| [✔️](kotlin%2F0297-serialize-and-deserialize-binary-tree.kt)
| [✔️](python%2F0297-serialize-and-deserialize-binary-tree.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0297-serialize-and-deserialize-binary-tree.swift)
| [✔️](typescript%2F0297-serialize-and-deserialize-binary-tree.ts)
+
+### Tries
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0208 - Implement Trie Prefix Tree](https://leetcode.com/problems/implement-trie-prefix-tree/) | ❌
| [✔️](c%2F0208-implement-trie-prefix-tree.c)
| [✔️](cpp%2F0208-implement-trie-prefix-tree.cpp)
| [✔️](csharp%2F0208-implement-trie-prefix-tree.cs)
| ❌
| [✔️](go%2F0208-implement-trie-prefix-tree.go)
| ❌
| [✔️](java%2F0208-implement-trie-prefix-tree.java)
| [✔️](javascript%2F0208-implement-trie-prefix-tree.js)
| [✔️](kotlin%2F0208-implement-trie-prefix-tree.kt)
| [✔️](python%2F0208-implement-trie-prefix-tree.py)
| [✔️](ruby%2F0208-implement-trie-prefix-tree.rb)
| [✔️](rust%2F0208-implement-trie-prefix-tree.rs)
| [✔️](scala%2F0208-implement-trie-prefix-tree.scala)
| [✔️](swift%2F0208-implement-trie-prefix-tree.swift)
| [✔️](typescript%2F0208-implement-trie-prefix-tree.ts)
+[0211 - Design Add And Search Words Data Structure](https://leetcode.com/problems/design-add-and-search-words-data-structure/) | ❌
| [✔️](c%2F0211-design-add-and-search-words-data-structure.c)
| [✔️](cpp%2F0211-design-add-and-search-words-data-structure.cpp)
| [✔️](csharp%2F0211-design-add-and-search-words-data-structure.cs)
| ❌
| [✔️](go%2F0211-design-add-and-search-words-data-structure.go)
| ❌
| [✔️](java%2F0211-design-add-and-search-words-data-structure.java)
| [✔️](javascript%2F0211-design-add-and-search-words-data-structure.js)
| [✔️](kotlin%2F0211-design-add-and-search-words-data-structure.kt)
| [✔️](python%2F0211-design-add-and-search-words-data-structure.py)
| [✔️](ruby%2F0211-design-add-and-search-words-data-structure.rb)
| [✔️](rust%2F0211-design-add-and-search-words-data-structure.rs)
| [✔️](scala%2F0211-design-add-and-search-words-data-structure.scala)
| [✔️](swift%2F0211-design-add-and-search-words-data-structure.swift)
| [✔️](typescript%2F0211-design-add-and-search-words-data-structure.ts)
+[2707 - Extra Characters in a String](https://leetcode.com/problems/extra-characters-in-a-string/) | ❌
| ❌
| [✔️](cpp%2F2707-extra-characters-in-a-string.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F2707-extra-characters-in-a-string.java)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0212 - Word Search II](https://leetcode.com/problems/word-search-ii/) | ❌
| [✔️](c%2F0212-word-search-ii.c)
| [✔️](cpp%2F0212-word-search-ii.cpp)
| [✔️](csharp%2F0212-word-search-ii.cs)
| ❌
| [✔️](go%2F0212-word-search-ii.go)
| ❌
| [✔️](java%2F0212-word-search-ii.java)
| [✔️](javascript%2F0212-word-search-ii.js)
| [✔️](kotlin%2F0212-word-search-ii.kt)
| [✔️](python%2F0212-word-search-ii.py)
| ❌
| [✔️](rust%2F0212-word-search-ii.rs)
| ❌
| [✔️](swift%2F0212-word-search-ii.swift)
| [✔️](typescript%2F0212-word-search-ii.ts)
+
+### Heap / Priority Queue
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0703 - Kth Largest Element In a Stream](https://leetcode.com/problems/kth-largest-element-in-a-stream/) | ❌
| [✔️](c%2F0703-kth-largest-element-in-a-stream.c)
| [✔️](cpp%2F0703-kth-largest-element-in-a-stream.cpp)
| [✔️](csharp%2F0703-kth-largest-element-in-a-stream.cs)
| ❌
| [✔️](go%2F0703-kth-largest-element-in-a-stream.go)
| ❌
| [✔️](java%2F0703-kth-largest-element-in-a-stream.java)
| [✔️](javascript%2F0703-kth-largest-element-in-a-stream.js)
| [✔️](kotlin%2F0703-kth-largest-element-in-a-stream.kt)
| [✔️](python%2F0703-kth-largest-element-in-a-stream.py)
| [✔️](ruby%2F0703-kth-largest-element-in-a-stream.rb)
| [✔️](rust%2F0703-kth-largest-element-in-a-stream.rs)
| ❌
| [✔️](swift%2F0703-kth-largest-element-in-a-stream.swift)
| [✔️](typescript%2F0703-kth-largest-element-in-a-stream.ts)
+[1046 - Last Stone Weight](https://leetcode.com/problems/last-stone-weight/) | ❌
| [✔️](c%2F1046-last-stone-weight.c)
| [✔️](cpp%2F1046-Last-Stone-Weight.cpp)
| [✔️](csharp%2F1046-Last-Stone-Weight.cs)
| ❌
| [✔️](go%2F1046-last-stone-weight.go)
| ❌
| [✔️](java%2F1046-Last-Stone-Weight.java)
| [✔️](javascript%2F1046-Last-Stone-Weight.js)
| [✔️](kotlin%2F1046-last-stone-weight.kt)
| [✔️](python%2F1046-last-stone-weight.py)
| [✔️](ruby%2F1046-Last-Stone-Weight.rb)
| [✔️](rust%2F1046-last-stone-weight.rs)
| ❌
| [✔️](swift%2F1046-last-stone-weight.swift)
| [✔️](typescript%2F1046-Last-Stone-Weight.ts)
+[0973 - K Closest Points to Origin](https://leetcode.com/problems/k-closest-points-to-origin/) | ❌
| [✔️](c%2F0973-k-closest-points-to-origin.c)
| [✔️](cpp%2F0973-k-closest-points-to-origin.cpp)
| [✔️](csharp%2F0973-k-closest-points-to-origin.cs)
| ❌
| [✔️](go%2F0973-k-closest-points-to-origin.go)
| ❌
| [✔️](java%2F0973-k-closest-points-to-origin.java)
| [✔️](javascript%2F0973-k-closest-points-to-origin.js)
| [✔️](kotlin%2F0973-k-closest-points-to-origin.kt)
| [✔️](python%2F0973-k-closest-points-to-origin.py)
| ❌
| [✔️](rust%2F0973-k-closest-points-to-origin.rs)
| ❌
| [✔️](swift%2F0973-k-closest-points-to-origin.swift)
| ❌
+[0215 - Kth Largest Element In An Array](https://leetcode.com/problems/kth-largest-element-in-an-array/) | ❌
| [✔️](c%2F0215-kth-largest-element-in-an-array.c)
| [✔️](cpp%2F0215-kth-largest-element-in-an-array.cpp)
| [✔️](csharp%2F0215-kth-largest-element-in-an-array.cs)
| ❌
| [✔️](go%2F0215-kth-largest-element-in-an-array.go)
| ❌
| [✔️](java%2F0215-kth-largest-element-in-an-array.java)
| [✔️](javascript%2F0215-kth-largest-element-in-an-array.js)
| [✔️](kotlin%2F0215-kth-largest-element-in-an-array.kt)
| [✔️](python%2F0215-kth-largest-element-in-an-array.py)
| ❌
| [✔️](rust%2F0215-kth-largest-element-in-an-array.rs)
| [✔️](scala%2F0215-kth-largest-element-in-an-array.scala)
| [✔️](swift%2F0215-kth-largest-element-in-an-array.swift)
| [✔️](typescript%2F0215-kth-largest-element-in-an-array.ts)
+[0621 - Task Scheduler](https://leetcode.com/problems/task-scheduler/) | ❌
| [✔️](c%2F0621-task-scheduler.c)
| [✔️](cpp%2F0621-task-scheduler.cpp)
| [✔️](csharp%2F0621-task-scheduler.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0621-task-scheduler.java)
| [✔️](javascript%2F0621-task-scheduler.js)
| [✔️](kotlin%2F0621-task-scheduler.kt)
| [✔️](python%2F0621-task-scheduler.py)
| ❌
| [✔️](rust%2F0621-task-scheduler.rs)
| ❌
| [✔️](swift%2F0621-task-scheduler.swift)
| [✔️](typescript%2F0621-task-scheduler.ts)
+[0355 - Design Twitter](https://leetcode.com/problems/design-twitter/) | ❌
| ❌
| [✔️](cpp%2F0355-design-twitter.cpp)
| [✔️](csharp%2F0355-design-twitter.cs)
| ❌
| [✔️](go%2F0355-design-twitter.go)
| ❌
| [✔️](java%2F0355-design-twitter.java)
| [✔️](javascript%2F0355-design-twitter.js)
| [✔️](kotlin%2F0355-design-twitter.kt)
| [✔️](python%2F0355-design-twitter.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0355-design-twitter.swift)
| ❌
+[1675 - Minimize Deviation in Array](https://leetcode.com/problems/minimize-deviation-in-array/) | ❌
| ❌
| [✔️](cpp%2F1675-minimize-deviation-in-array.cpp)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1675-minimize-deviation-in-array.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2542 - Maximum Subsequence Score](https://leetcode.com/problems/maximum-subsequence-score/) | ❌
| ❌
| [✔️](cpp%2F2542-maximum-subsequence-score.cpp)
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2542-maximum-subsequence-score.js)
| [✔️](kotlin%2F2542-maximum-subsequence-score.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1834 - Single Threaded Cpu](https://leetcode.com/problems/single-threaded-cpu/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1834-single-threaded-cpu.java)
| [✔️](javascript%2F1834-single-threaded-cpu.js)
| [✔️](kotlin%2F1834-single-threaded-cpu.kt)
| [✔️](python%2F1834-single-threaded-cpu.py)
| ❌
| [✔️](rust%2F1834-single-threaded-cpu.rs)
| ❌
| ❌
| ❌
+[1845 - Seat Reservation Manager](https://leetcode.com/problems/seat-reservation-manager/) | ❌
| ❌
| [✔️](cpp%2F1845-seat-reservation-manager.cpp)
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F1845-seat-reservation-manager.js)
| [✔️](kotlin%2F1845-seat-reservation-manager.kt)
| [✔️](python%2F1845-seat-reservation-manager.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1882 - Process Tasks Using Servers](https://leetcode.com/problems/process-tasks-using-servers/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1882-process-tasks-using-servers.java)
| [✔️](javascript%2F1882-process-tasks-using-servers.js)
| [✔️](kotlin%2F1882-process-tasks-using-servers.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1985 - Find The Kth Largest Integer In The Array](https://leetcode.com/problems/find-the-kth-largest-integer-in-the-array/) | ❌
| ❌
| [✔️](cpp%2F1985-Find-The-Kth-Largest-Integer-In-The-Array.cpp)
| ❌
| ❌
| [✔️](go%2F1985-find-the-kth-largest-integer-in-the-array.go)
| ❌
| [✔️](java%2F1985-Find-The-Kth-Largest-Integer-In-The-Array.java)
| [✔️](javascript%2F1985-find-the-kth-largest-integer-in-the-array.js)
| [✔️](kotlin%2F1985-find-the-kth-largest-integer-in-the-array.kt)
| [✔️](python%2F1985-find-the-kth-largest-integer-in-the-array.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F1985-Find-The-Kth-Largest-Integer-In-The-Array.swift)
| ❌
+[0767 - Reorganize String](https://leetcode.com/problems/reorganize-string/) | ❌
| ❌
| [✔️](cpp%2F0767-reorganize-string.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0767-reorganize-string.java)
| [✔️](javascript%2F0767-reorganize-string.js)
| [✔️](kotlin%2F0767-reorganize-string.kt)
| [✔️](python%2F0767-reorganize-string.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1405 - Longest Happy String](https://leetcode.com/problems/longest-happy-string/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1405-longest-happy-string.java)
| [✔️](javascript%2F1405-longest-happy-string.js)
| [✔️](kotlin%2F1405-longest-happy-string.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1094 - Car Pooling](https://leetcode.com/problems/car-pooling/) | ❌
| ❌
| [✔️](cpp%2F1094-car-pooling.cpp)
| [✔️](csharp%2F1094-Car-Pooling.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F1094-car-pooling.java)
| [✔️](javascript%2F1094-car-pooling.js)
| [✔️](kotlin%2F1094-car-pooling.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0295 - Find Median From Data Stream](https://leetcode.com/problems/find-median-from-data-stream/) | ❌
| ❌
| [✔️](cpp%2F0295-find-median-from-data-stream.cpp)
| [✔️](csharp%2F0295-find-median-from-data-stream.cs)
| ❌
| [✔️](go%2F0295-find-median-from-data-stream.go)
| ❌
| [✔️](java%2F0295-find-median-from-data-stream.java)
| [✔️](javascript%2F0295-find-median-from-data-stream.js)
| [✔️](kotlin%2F0295-find-median-from-data-stream.kt)
| [✔️](python%2F0295-find-median-from-data-stream.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0295-find-median-from-data-stream.swift)
| [✔️](typescript%2F0295-find-median-from-data-stream.ts)
+[1383 - Maximum Performance of a Team](https://leetcode.com/problems/maximum-performance-of-a-team/) | ❌
| ❌
| ❌
| [✔️](csharp%2F1383-Maximum-Performance-Of-A-Team.cs)
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F1383-maximum-performance-of-a-team.js)
| [✔️](kotlin%2F1383-maximum-performance-of-a-team.kt)
| [✔️](python%2F1383-maximum-performance-of-a-team.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0502 - IPO](https://leetcode.com/problems/ipo/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0502-ipo.java)
| [✔️](javascript%2F0502-ipo.js)
| [✔️](kotlin%2F0502-ipo.kt)
| [✔️](python%2F0502-ipo.py)
| ❌
| [✔️](rust%2F0502-ipo.rs)
| ❌
| [✔️](swift%2F0502-ipo.swift)
| [✔️](typescript%2F0502-ipo.ts)
+
+### Backtracking
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0078 - Subsets](https://leetcode.com/problems/subsets/) | ❌
| [✔️](c%2F0078-subsets.c)
| [✔️](cpp%2F0078-subsets.cpp)
| [✔️](csharp%2F0078-subsets.cs)
| ❌
| [✔️](go%2F0078-subsets.go)
| ❌
| [✔️](java%2F0078-subsets.java)
| [✔️](javascript%2F0078-subsets.js)
| [✔️](kotlin%2F0078-subsets.kt)
| [✔️](python%2F0078-subsets.py)
| [✔️](ruby%2F0078-subsets.rb)
| [✔️](rust%2F0078-subsets.rs)
| ❌
| [✔️](swift%2F0078-subsets.swift)
| [✔️](typescript%2F0078-subsets.ts)
+[0039 - Combination Sum](https://leetcode.com/problems/combination-sum/) | ❌
| [✔️](c%2F0039-combination-sum.c)
| [✔️](cpp%2F0039-combination-sum.cpp)
| [✔️](csharp%2F0039-combination-sum.cs)
| ❌
| [✔️](go%2F0039-combination-sum.go)
| ❌
| [✔️](java%2F0039-combination-sum.java)
| [✔️](javascript%2F0039-combination-sum.js)
| [✔️](kotlin%2F0039-combination-sum.kt)
| [✔️](python%2F0039-combination-sum.py)
| [✔️](ruby%2F0039-combination-sum.rb)
| [✔️](rust%2F0039-combination-sum.rs)
| ❌
| [✔️](swift%2F0039-combination-sum.swift)
| [✔️](typescript%2F0039-combination-sum.ts)
+[0077 - Combinations](https://leetcode.com/problems/combinations/) | ❌
| ❌
| [✔️](cpp%2F0077-combinations.cpp)
| [✔️](csharp%2F0077-combinations.cs)
| ❌
| [✔️](go%2F0077-combinations.go)
| ❌
| [✔️](java%2F0077-combinations.java)
| ❌
| [✔️](kotlin%2F0077-combinations.kt)
| [✔️](python%2F0077-combinations.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0077-combinations.swift)
| ❌
+[0046 - Permutations](https://leetcode.com/problems/permutations/) | ❌
| [✔️](c%2F0046-permutations.c)
| [✔️](cpp%2F0046-permutations.cpp)
| [✔️](csharp%2F0046-permutations.cs)
| ❌
| [✔️](go%2F0046-permutations.go)
| ❌
| [✔️](java%2F0046-permutations.java)
| [✔️](javascript%2F0046-permutations.js)
| [✔️](kotlin%2F0046-permutations.kt)
| [✔️](python%2F0046-permutations.py)
| [✔️](ruby%2F0046-permutations.rb)
| [✔️](rust%2F0046-permutations.rs)
| ❌
| [✔️](swift%2F0046-permutations.swift)
| [✔️](typescript%2F0046-permutations.ts)
+[0090 - Subsets II](https://leetcode.com/problems/subsets-ii/) | ❌
| [✔️](c%2F0090-subsets-ii.c)
| [✔️](cpp%2F0090-subsets-ii.cpp)
| [✔️](csharp%2F0090-subsets-ii.cs)
| ❌
| [✔️](go%2F0090-subsets-ii.go)
| ❌
| [✔️](java%2F0090-subsets-ii.java)
| [✔️](javascript%2F0090-subsets-ii.js)
| [✔️](kotlin%2F0090-subsets-ii.kt)
| [✔️](python%2F0090-subsets-ii.py)
| [✔️](ruby%2F0090-subsets-ii.rb)
| [✔️](rust%2F0090-subsets-ii.rs)
| ❌
| [✔️](swift%2F0090-subsets-ii.swift)
| [✔️](typescript%2F0090-subsets-ii.ts)
+[0040 - Combination Sum II](https://leetcode.com/problems/combination-sum-ii/) | ❌
| [✔️](c%2F0040-combination-sum-ii.c)
| [✔️](cpp%2F0040-combination-sum-ii.cpp)
| [✔️](csharp%2F0040-combination-sum-ii.cs)
| ❌
| [✔️](go%2F0040-combination-sum-ii.go)
| ❌
| [✔️](java%2F0040-combination-sum-ii.java)
| [✔️](javascript%2F0040-combination-sum-ii.js)
| [✔️](kotlin%2F0040-combination-sum-ii.kt)
| [✔️](python%2F0040-combination-sum-ii.py)
| [✔️](ruby%2F0040-combination-sum-ii.rb)
| ❌
| ❌
| [✔️](swift%2F0040-combination-sum-ii.swift)
| [✔️](typescript%2F0040-combination-sum-ii.ts)
+[0047 - Permutations II](https://leetcode.com/problems/permutations-ii/) | ❌
| ❌
| ❌
| [✔️](csharp%2F0047-permutations-ii.cs)
| ❌
| [✔️](go%2F0047-permutations-ii.go)
| ❌
| [✔️](java%2F0047-permutations-ii.java)
| ❌
| [✔️](kotlin%2F0047-permutations-ii.kt)
| [✔️](python%2F0047-permutations-ii.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0047-permutations-ii.swift)
| [✔️](typescript%2F0047-permutations-ii.ts)
+[0079 - Word Search](https://leetcode.com/problems/word-search/) | ❌
| [✔️](c%2F0079-word-search.c)
| [✔️](cpp%2F0079-word-search.cpp)
| [✔️](csharp%2F0079-word-search.cs)
| ❌
| [✔️](go%2F0079-word-search.go)
| ❌
| [✔️](java%2F0079-word-search.java)
| [✔️](javascript%2F0079-word-search.js)
| [✔️](kotlin%2F0079-word-search.kt)
| [✔️](python%2F0079-word-search.py)
| [✔️](ruby%2F0079-word-search.rb)
| [✔️](rust%2F0079-word-search.rs)
| ❌
| [✔️](swift%2F0079-word-search.swift)
| [✔️](typescript%2F0079-word-search.ts)
+[0131 - Palindrome Partitioning](https://leetcode.com/problems/palindrome-partitioning/) | ❌
| ❌
| [✔️](cpp%2F0131-palindrome-partitioning.cpp)
| [✔️](csharp%2F0131-palindrome-partitioning.cs)
| ❌
| [✔️](go%2F0131-palindrome-partitioning.go)
| ❌
| [✔️](java%2F0131-palindrome-partitioning.java)
| [✔️](javascript%2F0131-palindrome-partitioning.js)
| [✔️](kotlin%2F0131-palindrome-partitioning.kt)
| [✔️](python%2F0131-palindrome-partitioning.py)
| [✔️](ruby%2F0131-palindrome-partitioning.rb)
| [✔️](rust%2F0131-palindrome-partitioning.rs)
| ❌
| [✔️](swift%2F0131-palindrome-partitioning.swift)
| [✔️](typescript%2F0131-palindrome-partitioning.ts)
+[0093 - Restore IP Addresses](https://leetcode.com/problems/restore-ip-addresses/) | ❌
| ❌
| ❌
| [✔️](csharp%2F0093-restore-ip-addresses.cs)
| ❌
| [✔️](go%2F0093-restore-ip-addresses.go)
| ❌
| ❌
| [✔️](javascript%2F0093-restore-ip-addresses.js)
| [✔️](kotlin%2F0093-restore-ip-addresses.kt)
| ❌
| ❌
| [✔️](rust%2F0093-restore-ip-addresses.rs)
| ❌
| ❌
| [✔️](typescript%2F0093-restore-ip-addresses.ts)
+[0017 - Letter Combinations of a Phone Number](https://leetcode.com/problems/letter-combinations-of-a-phone-number/) | ❌
| ❌
| [✔️](cpp%2F0017-letter-combinations-of-a-phone-number.cpp)
| [✔️](csharp%2F0017-letter-combinations-of-a-phone-number.cs)
| ❌
| [✔️](go%2F0017-letter-combinations-of-a-phone-number.go)
| ❌
| [✔️](java%2F0017-letter-combinations-of-a-phone-number.java)
| [✔️](javascript%2F0017-letter-combinations-of-a-phone-number.js)
| [✔️](kotlin%2F0017-letter-combinations-of-a-phone-number.kt)
| [✔️](python%2F0017-letter-combinations-of-a-phone-number.py)
| [✔️](ruby%2F0017-letter-combinations-of-a-phone-number.rb)
| [✔️](rust%2F0017-letter-combinations-of-a-phone-number.rs)
| ❌
| [✔️](swift%2F0017-letter-combinations-of-a-phone-number.swift)
| [✔️](typescript%2F0017-letter-combinations-of-a-phone-number.ts)
+[0473 - Matchsticks to Square](https://leetcode.com/problems/matchsticks-to-square/) | ❌
| ❌
| [✔️](cpp%2F0473-matchsticks-to-square.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0473-matchsticks-to-square.java)
| [✔️](javascript%2F0473-matchsticks-to-square.js)
| [✔️](kotlin%2F0473-matchsticks-to-square.kt)
| [✔️](python%2F0473-matchsticks-to-square.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1849 - Splitting a String Into Descending Consecutive Values](https://leetcode.com/problems/splitting-a-string-into-descending-consecutive-values/) | ❌
| ❌
| [✔️](cpp%2F1849-splitting-a-string-into-descending-consecutive-values.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1849-splitting-a-string-into-descending-consecutive-values.java)
| ❌
| [✔️](kotlin%2F1849-splitting-a-string-into-descending-consecutive-values.kt)
| [✔️](python%2F1849-splitting-a-string-into-descending-consecutive-values.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1980 - Find Unique Binary String](https://leetcode.com/problems/find-unique-binary-string/) | ❌
| ❌
| [✔️](cpp%2F1980-find-unique-binary-string.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1980-find-unique-binary-string.java)
| ❌
| [✔️](kotlin%2F1980-find-unique-binary-string.kt)
| [✔️](python%2F1980-find-unique-binary-string.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1239 - Maximum Length of a Concatenated String With Unique Characters](https://leetcode.com/problems/maximum-length-of-a-concatenated-string-with-unique-characters/) | ❌
| ❌
| ❌
| [✔️](csharp%2F1239-maximum-length-of-a-concatenated-string-with-unique-characters.cs)
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1239-maximum-length-of-a-concatenated-string-with-unique-characters.kt)
| [✔️](python%2F1239-maximum-length-of-a-concatenated-string-with-unique-characters.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0698 - Partition to K Equal Sum Subsets](https://leetcode.com/problems/partition-to-k-equal-sum-subsets/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0698-partition-to-k-equal-sum-subsets.java)
| ❌
| [✔️](kotlin%2F0698-partition-to-k-equal-sum-subsets.kt)
| [✔️](python%2F0698-partition-to-k-equal-sum-subsets.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0051 - N Queens](https://leetcode.com/problems/n-queens/) | ❌
| [✔️](c%2F0051-n-queens.c)
| [✔️](cpp%2F0051-n-queens.cpp)
| [✔️](csharp%2F0051-n-queens.cs)
| ❌
| [✔️](go%2F0051-n-queens.go)
| ❌
| [✔️](java%2F0051-n-queens.java)
| [✔️](javascript%2F0051-n-queens.js)
| [✔️](kotlin%2F0051-n-queens.kt)
| [✔️](python%2F0051-n-queens.py)
| ❌
| [✔️](rust%2F0051-n-queens.rs)
| ❌
| [✔️](swift%2F0051-n-queens.swift)
| [✔️](typescript%2F0051-n-queens.ts)
+[0052 - N Queens II](https://leetcode.com/problems/n-queens-ii/) | ❌
| [✔️](c%2F0052-n-queens-ii.c)
| [✔️](cpp%2F0052-n-queens-ii.cpp)
| [✔️](csharp%2F0052-n-queens-ii.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0052-n-queens-ii.java)
| [✔️](javascript%2F0052-n-queens-ii.js)
| [✔️](kotlin%2F0052-n-queens-ii.kt)
| [✔️](python%2F0052-n-queens-ii.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+
+### Graphs
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0463 - Island Perimeter](https://leetcode.com/problems/island-perimeter/) | ❌
| [✔️](c%2F0463-island-perimeter.c)
| [✔️](cpp%2F0463-island-perimeter.cpp)
| [✔️](csharp%2F0463-island-perimeter.cs)
| ❌
| [✔️](go%2F0463-island-perimeter.go)
| ❌
| [✔️](java%2F0463-island-perimeter.java)
| [✔️](javascript%2F0463-island-perimeter.js)
| [✔️](kotlin%2F0463-island-perimeter.kt)
| [✔️](python%2F0463-island-perimeter.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0953 - Verifying An Alien Dictionary](https://leetcode.com/problems/verifying-an-alien-dictionary/) | ❌
| [✔️](c%2F0953-verifying-an-alien-dictionary.c)
| [✔️](cpp%2F0953-verifying-an-alien-dictionary.cpp)
| ❌
| ❌
| [✔️](go%2F0953-verifying-an-alien-dictionary.go)
| ❌
| [✔️](java%2F0953-verifying-an-alien-dictionary.java)
| [✔️](javascript%2F0953-verifying-an-alien-dictionary.js)
| [✔️](kotlin%2F0953-verifying-an-alien-dictionary.kt)
| [✔️](python%2F0953-verifying-an-alien-dictionary.py)
| ❌
| [✔️](rust%2F0953-verifying-an-alien-dictionary.rs)
| ❌
| ❌
| ❌
+[0200 - Number of Islands](https://leetcode.com/problems/number-of-islands/) | ❌
| [✔️](c%2F0200-number-of-islands.c)
| [✔️](cpp%2F0200-number-of-islands.cpp)
| [✔️](csharp%2F0200-number-of-islands.cs)
| ❌
| [✔️](go%2F0200-number-of-islands.go)
| ❌
| [✔️](java%2F0200-number-of-islands.java)
| [✔️](javascript%2F0200-number-of-islands.js)
| [✔️](kotlin%2F0200-number-of-islands.kt)
| [✔️](python%2F0200-number-of-islands.py)
| [✔️](ruby%2F0200-number-of-islands.rb)
| [✔️](rust%2F0200-number-of-islands.rs)
| ❌
| [✔️](swift%2F0200-number-of-islands.swift)
| [✔️](typescript%2F0200-number-of-islands.ts)
+[0133 - Clone Graph](https://leetcode.com/problems/clone-graph/) | ❌
| [✔️](c%2F0133-clone-graph.c)
| [✔️](cpp%2F0133-clone-graph.cpp)
| [✔️](csharp%2F0133-clone-graph.cs)
| ❌
| [✔️](go%2F0133-clone-graph.go)
| ❌
| [✔️](java%2F0133-clone-graph.java)
| [✔️](javascript%2F0133-clone-graph.js)
| [✔️](kotlin%2F0133-clone-graph.kt)
| [✔️](python%2F0133-clone-graph.py)
| [✔️](ruby%2F0133-clone-graph.rb)
| ❌
| ❌
| [✔️](swift%2F0133-clone-graph.swift)
| [✔️](typescript%2F0133-clone-graph.ts)
+[0695 - Max Area of Island](https://leetcode.com/problems/max-area-of-island/) | ❌
| [✔️](c%2F0695-max-area-of-island.c)
| [✔️](cpp%2F0695-max-area-of-island.cpp)
| [✔️](csharp%2F0695-max-area-of-island.cs)
| ❌
| [✔️](go%2F0695-max-area-of-island.go)
| ❌
| [✔️](java%2F0695-max-area-of-island.java)
| [✔️](javascript%2F0695-max-area-of-island.js)
| [✔️](kotlin%2F0695-max-area-of-island.kt)
| [✔️](python%2F0695-max-area-of-island.py)
| ❌
| [✔️](rust%2F0695-max-area-of-island.rs)
| ❌
| [✔️](swift%2F0695-max-area-of-island.swift)
| [✔️](typescript%2F0695-max-area-of-island.ts)
+[1905 - Count Sub Islands](https://leetcode.com/problems/count-sub-islands/) | ❌
| [✔️](c%2F1905-Count-Sub-Islands.c)
| [✔️](cpp%2F1905-count-sub-islands.cpp)
| [✔️](csharp%2F1905-Count-Sub-Islands.cs)
| ❌
| [✔️](go%2F1905-count-sub-islands.go)
| ❌
| [✔️](java%2F1905-count-sub-islands.java)
| [✔️](javascript%2F1905-count-sub-islands.js)
| [✔️](kotlin%2F1905-count-sub-islands.kt)
| [✔️](python%2F1905-count-sub-islands.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0417 - Pacific Atlantic Water Flow](https://leetcode.com/problems/pacific-atlantic-water-flow/) | ❌
| [✔️](c%2F0417-pacific-atlantic-water-flow.c)
| [✔️](cpp%2F0417-pacific-atlantic-water-flow.cpp)
| [✔️](csharp%2F0417-pacific-atlantic-water-flow.cs)
| ❌
| [✔️](go%2F0417-pacific-atlantic-water-flow.go)
| ❌
| [✔️](java%2F0417-pacific-atlantic-water-flow.java)
| [✔️](javascript%2F0417-pacific-atlantic-water-flow.js)
| [✔️](kotlin%2F0417-pacific-atlantic-water-flow.kt)
| [✔️](python%2F0417-pacific-atlantic-water-flow.py)
| ❌
| [✔️](rust%2F0417-pacific-atlantic-water-flow.rs)
| ❌
| [✔️](swift%2F0417-pacific-atlantic-water-flow.swift)
| [✔️](typescript%2F0417-pacific-atlantic-water-flow.ts)
+[0130 - Surrounded Regions](https://leetcode.com/problems/surrounded-regions/) | ❌
| [✔️](c%2F0130-surrounded-regions.c)
| [✔️](cpp%2F0130-surrounded-regions.cpp)
| [✔️](csharp%2F0130-surrounded-regions.cs)
| [✔️](dart%2F0130-surrounded-regions.dart)
| [✔️](go%2F0130-surrounded-regions.go)
| ❌
| [✔️](java%2F0130-surrounded-regions.java)
| [✔️](javascript%2F0130-surrounded-regions.js)
| [✔️](kotlin%2F0130-surrounded-regions.kt)
| [✔️](python%2F0130-surrounded-regions.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0130-surrounded-regions.swift)
| [✔️](typescript%2F0130-surrounded-regions.ts)
+[1466 - Reorder Routes to Make All Paths Lead to The City Zero](https://leetcode.com/problems/reorder-routes-to-make-all-paths-lead-to-the-city-zero/) | ❌
| ❌
| [✔️](cpp%2F1466-reorder-routes-to-make-all-paths-lead-to-the-city-zero.cpp)
| [✔️](csharp%2F1466-Reorder-Routes-to-Make-All-Paths-Lead-To-The-City-Zero.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F1466-reorder-routes-to-make-all-paths-lead-to-the-city-zero.java)
| ❌
| [✔️](kotlin%2F1466-reorder-routes-to-make-all-paths-lead-to-the-city-zero.kt)
| [✔️](python%2F1466-reorder-routes-to-make-all-paths-lead-to-the-city-zero.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0994 - Rotting Oranges](https://leetcode.com/problems/rotting-oranges/) | ❌
| [✔️](c%2F0994-rotting-oranges.c)
| [✔️](cpp%2F0994-rotting-oranges.cpp)
| [✔️](csharp%2F0994-rotting-oranges.cs)
| ❌
| [✔️](go%2F0994-rotting-oranges.go)
| ❌
| [✔️](java%2F0994-rotting-oranges.java)
| [✔️](javascript%2F0994-rotting-oranges.js)
| [✔️](kotlin%2F0994-rotting-oranges.kt)
| [✔️](python%2F0994-rotting-oranges.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0994-rotting-oranges.swift)
| [✔️](typescript%2F0994-rotting-oranges.ts)
+[0286 - Walls And Gates](https://leetcode.com/problems/walls-and-gates/) | ❌
| ❌
| [✔️](cpp%2F0286-walls-and-gates.cpp)
| [✔️](csharp%2F0286-walls-and-gates.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0286-walls-and-gates.java)
| [✔️](javascript%2F0286-walls-and-gates.js)
| [✔️](kotlin%2F0286-walls-and-gates.kt)
| [✔️](python%2F0286-walls-and-gates.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0286-walls-and-gates.swift)
| ❌
+[0909 - Snakes And Ladders](https://leetcode.com/problems/snakes-and-ladders/) | ❌
| ❌
| ❌
| [✔️](csharp%2F0909-snakes-and-ladders.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0909-snakes-and-ladders.java)
| [✔️](javascript%2F0909-snakes-and-ladders.js)
| [✔️](kotlin%2F0909-snakes-and-ladders.kt)
| [✔️](python%2F0909-snakes-and-ladders.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0752 - Open The Lock](https://leetcode.com/problems/open-the-lock/) | ❌
| ❌
| ❌
| [✔️](csharp%2F0752-open-the-lock.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0752-open-the-lock.java)
| [✔️](javascript%2F0752-open-the-lock.js)
| [✔️](kotlin%2F0752-open-the-lock.kt)
| [✔️](python%2F0752-open-the-lock.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0802 - Find Eventual Safe States](https://leetcode.com/problems/find-eventual-safe-states/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0802-find-eventual-safe-states.java)
| ❌
| [✔️](kotlin%2F0802-find-eventual-safe-states.kt)
| [✔️](python%2F0802-find-eventual-safe-states.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0207 - Course Schedule](https://leetcode.com/problems/course-schedule/) | ❌
| [✔️](c%2F0207-course-schedule.c)
| [✔️](cpp%2F0207-course-schedule.cpp)
| [✔️](csharp%2F0207-course-schedule.cs)
| ❌
| [✔️](go%2F0207-course-schedule.go)
| ❌
| [✔️](java%2F0207-course-schedule.java)
| [✔️](javascript%2F0207-course-schedule.js)
| [✔️](kotlin%2F0207-course-schedule.kt)
| [✔️](python%2F0207-course-schedule.py)
| ❌
| [✔️](rust%2F0207-course-schedule.rs)
| ❌
| [✔️](swift%2F0207-course-schedule.swift)
| [✔️](typescript%2F0207-course-schedule.ts)
+[0210 - Course Schedule II](https://leetcode.com/problems/course-schedule-ii/) | ❌
| ❌
| [✔️](cpp%2F0210-course-schedule-ii.cpp)
| [✔️](csharp%2F0210-course-schedule-ii.cs)
| ❌
| [✔️](go%2F0210-course-schedule-ii.go)
| ❌
| [✔️](java%2F0210-course-schedule-ii.java)
| [✔️](javascript%2F0210-course-schedule-ii.js)
| [✔️](kotlin%2F0210-course-schedule-ii.kt)
| [✔️](python%2F0210-course-schedule-ii.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0210-course-schedule-ii.swift)
| [✔️](typescript%2F0210-course-schedule-ii.ts)
+[1462 - Course Schedule IV](https://leetcode.com/problems/course-schedule-iv/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1462-course-schedule-iv.java)
| ❌
| [✔️](kotlin%2F1462-course-schedule-iv.kt)
| [✔️](python%2F1462-course-schedule-iv.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F1462-course-schedule-iv.swift)
| [✔️](typescript%2F1462-course-schedule-iv.ts)
+[1958 - Check if Move Is Legal](https://leetcode.com/problems/check-if-move-is-legal/) | ❌
| ❌
| [✔️](cpp%2F1958-check-if-move-is-legal.cpp)
| ❌
| ❌
| [✔️](go%2F1958-check-if-move-is-legal.go)
| ❌
| [✔️](java%2F1958-check-if-move-is-legal.java)
| [✔️](javascript%2F1958-check-if-move-is-legal.js)
| [✔️](kotlin%2F1958-check-if-move-is-legal.kt)
| [✔️](python%2F1958-check-if-move-is-legal.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0934 - Shortest Bridge](https://leetcode.com/problems/shortest-bridge/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0934-shortest-bridge.java)
| [✔️](javascript%2F0934-shortest-bridge.js)
| [✔️](kotlin%2F0934-shortest-bridge.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1091 - Shortest Path in Binary Matrix](https://leetcode.com/problems/shortest-path-in-binary-matrix/) | ❌
| ❌
| [✔️](cpp%2F1091-shortest-path-in-binary-matrix.cpp)
| ❌
| ❌
| [✔️](go%2F1091-shortest-path-in-binary-matrix.go)
| ❌
| [✔️](java%2F1091-shortest-path-in-binary-matrix.java)
| ❌
| [✔️](kotlin%2F1091-shortest-path-in-binary-matrix.kt)
| [✔️](python%2F1091-shortest-path-in-binary-matrix.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F1091-shortest-path-in-binary-matrix.swift)
| ❌
+[0684 - Redundant Connection](https://leetcode.com/problems/redundant-connection/) | ❌
| [✔️](c%2F0684-redundant-connection.c)
| [✔️](cpp%2F0684-redundant-connection.cpp)
| [✔️](csharp%2F0684-redundant-connection.cs)
| ❌
| [✔️](go%2F0684-redundant-connection.go)
| ❌
| [✔️](java%2F0684-redundant-connection.java)
| [✔️](javascript%2F0684-redundant-connection.js)
| [✔️](kotlin%2F0684-redundant-connection.kt)
| [✔️](python%2F0684-redundant-connection.py)
| ❌
| [✔️](rust%2F0684-redundant-connection.rs)
| ❌
| [✔️](swift%2F0684-redundant-connection.swift)
| [✔️](typescript%2F0684-redundant-connection.ts)
+[0323 - Number of Connected Components In An Undirected Graph](https://leetcode.com/problems/number-of-connected-components-in-an-undirected-graph/) | ❌
| ❌
| [✔️](cpp%2F0323-number-of-connected-components-in-an-undirected-graph.cpp)
| [✔️](csharp%2F0323-number-of-connected-components-in-an-undirected-graph.cs)
| ❌
| [✔️](go%2F0323-number-of-connected-components-in-an-undirected-graph.go)
| ❌
| [✔️](java%2F0323-number-of-connected-components-in-an-undirected-graph.java)
| [✔️](javascript%2F0323-number-of-connected-components-in-an-undirected-graph.js)
| [✔️](kotlin%2F0323-number-of-connected-components-in-an-undirected-graph.kt)
| [✔️](python%2F0323-number-of-connected-components-in-an-undirected-graph.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0323-number-of-connected-components-in-an-undirected-graph.swift)
| ❌
+[0261 - Graph Valid Tree](https://leetcode.com/problems/graph-valid-tree/) | ❌
| ❌
| [✔️](cpp%2F0261-graph-valid-tree.cpp)
| [✔️](csharp%2F0261-graph-valid-tree.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0261-graph-valid-tree.java)
| [✔️](javascript%2F0261-graph-valid-tree.js)
| [✔️](kotlin%2F0261-graph-valid-tree.kt)
| [✔️](python%2F0261-graph-valid-tree.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0261-graph-valid-tree.swift)
| [✔️](typescript%2F0261-graph-valid-tree.ts)
+[0721 - Accounts Merge](https://leetcode.com/problems/accounts-merge/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0721-accounts-merge.java)
| ❌
| [✔️](kotlin%2F0721-accounts-merge.kt)
| [✔️](python%2F0721-accounts-merge.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0721-accounts-merge.swift)
| ❌
+[2359 - Find Closest Node to Given Two Nodes](https://leetcode.com/problems/find-closest-node-to-given-two-nodes/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F2359-find-closest-node-to-given-two-nodes.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1162 - As Far from Land as Possible](https://leetcode.com/problems/as-far-from-land-as-possible/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1162-as-far-from-land-as-possible.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1129 - Shortest Path with Alternating Colors](https://leetcode.com/problems/shortest-path-with-alternating-colors/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1129-shortest-path-with-alternating-colors.java)
| ❌
| [✔️](kotlin%2F1129-shortest-path-with-alternating-colors.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2477 - Minimum Fuel Cost to Report to the Capital](https://leetcode.com/problems/minimum-fuel-cost-to-report-to-the-capital/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F2477-minimum-fuel-cost-to-report-to-the-capital.java)
| ❌
| [✔️](kotlin%2F2477-minimum-fuel-cost-to-report-to-the-capital.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2492 - Minimum Score of a Path Between Two Cities](https://leetcode.com/problems/minimum-score-of-a-path-between-two-cities/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F2492-minimum-score-of-a-path-between-two-cities.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1254 - Number of Closed Islands](https://leetcode.com/problems/number-of-closed-islands/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1254-number-of-closed-islands.kt)
| [✔️](python%2F1254-number-of-closed-islands.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1020 - Number of Enclaves](https://leetcode.com/problems/number-of-enclaves/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1020-number-of-enclaves.java)
| ❌
| [✔️](kotlin%2F1020-number-of-enclaves.kt)
| [✔️](python%2F1020-number-of-enclaves.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1557 - Minimum Number of Vertices to Reach all Nodes](https://leetcode.com/problems/minimum-number-of-vertices-to-reach-all-nodes/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1557-minimum-number-of-vertices-to-reach-all-nodes.java)
| ❌
| [✔️](kotlin%2F1557-minimum-number-of-vertices-to-reach-all-nodes.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0785 - Is Graph Bipartite?](https://leetcode.com/problems/is-graph-bipartite/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0785-is-graph-bipartite.java)
| ❌
| [✔️](kotlin%2F0785-is-graph-bipartite.kt)
| [✔️](python%2F0785-is-graph-bipartite.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0399 - Evaluate Division](https://leetcode.com/problems/evaluate-division/) | ❌
| ❌
| [✔️](cpp%2F0399-evaluate-division.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0399-evaluate-division.java)
| ❌
| [✔️](kotlin%2F0399-evaluate-division.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2101 - Detonate the Maximum Bombs](https://leetcode.com/problems/detonate-the-maximum-bombs/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F2101-detonate-the-maximum-bombs.kt)
| [✔️](python%2F2101-detonate-the-maximum-bombs.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1857 - Largest Color Value in a Directed Graph](https://leetcode.com/problems/largest-color-value-in-a-directed-graph/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1857-largest-color-value-in-a-directed-graph.kt)
| ❌
| ❌
| [✔️](rust%2F1857-largest-color-value-in-a-directed-graph.rs)
| ❌
| ❌
| ❌
+[1553 - Minimum Number of Days to Eat N Oranges](https://leetcode.com/problems/minimum-number-of-days-to-eat-n-oranges/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1553-minimum-number-of-days-to-eat-n-oranges.java)
| ❌
| [✔️](kotlin%2F1553-minimum-number-of-days-to-eat-n-oranges.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0127 - Word Ladder](https://leetcode.com/problems/word-ladder/) | ❌
| ❌
| [✔️](cpp%2F0127-word-ladder.cpp)
| [✔️](csharp%2F0127-word-ladder.cs)
| ❌
| [✔️](go%2F0127-word-ladder.go)
| ❌
| [✔️](java%2F0127-word-ladder.java)
| [✔️](javascript%2F0127-word-ladder.js)
| [✔️](kotlin%2F0127-word-ladder.kt)
| [✔️](python%2F0127-word-ladder.py)
| ❌
| [✔️](rust%2F0127-word-ladder.rs)
| ❌
| [✔️](swift%2F0127-word-ladder.swift)
| [✔️](typescript%2F0127-word-ladder.ts)
+
+### Advanced Graphs
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[1631 - Path with Minimum Effort](https://leetcode.com/problems/path-with-minimum-effort/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1631-path-with-minimum-effort.kt)
| [✔️](python%2F1631-path-with-minimum-effort.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0332 - Reconstruct Itinerary](https://leetcode.com/problems/reconstruct-itinerary/) | ❌
| [✔️](c%2F0332-reconstruct-itinerary.c)
| [✔️](cpp%2F0332-reconstruct-itinerary.cpp)
| [✔️](csharp%2F0332-reconstruct-itinerary.cs)
| ❌
| [✔️](go%2F0332-reconstruct-itinerary.go)
| ❌
| [✔️](java%2F0332-reconstruct-itinerary.java)
| [✔️](javascript%2F0332-reconstruct-itinerary.js)
| [✔️](kotlin%2F0332-reconstruct-itinerary.kt)
| [✔️](python%2F0332-reconstruct-itinerary.py)
| ❌
| [✔️](rust%2F0332-reconstruct-itinerary.rs)
| ❌
| [✔️](swift%2F0332-reconstruct-itinerary.swift)
| ❌
+[1584 - Min Cost to Connect All Points](https://leetcode.com/problems/min-cost-to-connect-all-points/) | ❌
| ❌
| [✔️](cpp%2F1584-Min-Cost-To-Connect-All-Points.cpp)
| [✔️](csharp%2F1584-Min-Cost-to-Connect-All-Points.cs)
| ❌
| [✔️](go%2F1584-min-cost-to-connect-all-points.go)
| ❌
| [✔️](java%2F1584-Min-Cost-to-Connect-All-Points.java)
| [✔️](javascript%2F1584-Min-Cost-to-Connect-all-Points.js)
| [✔️](kotlin%2F1584-min-cost-to-connect-all-points.kt)
| [✔️](python%2F1584-min-cost-to-connect-all-points.py)
| [✔️](ruby%2F1584-Min-Cost-to-Connect-All-Points.rb)
| ❌
| ❌
| [✔️](swift%2F1584-Min-Cost-to-Connect-All-Points.swift)
| [✔️](typescript%2F1584-min-cost-to-connect-all-points.ts)
+[0743 - Network Delay Time](https://leetcode.com/problems/network-delay-time/) | ❌
| ❌
| [✔️](cpp%2F0743-network-delay-time.cpp)
| [✔️](csharp%2F0743-network-delay-time.cs)
| ❌
| [✔️](go%2F0743-network-delay-time.go)
| ❌
| [✔️](java%2F0743-network-delay-time.java)
| [✔️](javascript%2F0743-network-delay-time.js)
| [✔️](kotlin%2F0743-network-delay-time.kt)
| [✔️](python%2F0743-network-delay-time.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0743-network-delay-time.swift)
| [✔️](typescript%2F0743-network-delay-time.ts)
+[1514 - Path with Maximum Probability](https://leetcode.com/problems/path-with-maximum-probability/) | ❌
| ❌
| [✔️](cpp%2F1514-path-with-maximum-probability.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1514-path-with-maximum-probability.java)
| [✔️](javascript%2F1514-path-with-maximum-probability.js)
| [✔️](kotlin%2F1514-path-with-maximum-probability.kt)
| [✔️](python%2F1514-path-with-maximum-probability.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F1514-path-with-maximum-probability.swift)
| [✔️](typescript%2F1514-path-with-maximum-probability.ts)
+[0778 - Swim In Rising Water](https://leetcode.com/problems/swim-in-rising-water/) | ❌
| ❌
| [✔️](cpp%2F0778-swim-in-rising-water.cpp)
| [✔️](csharp%2F0778-swim-in-rising-water.cs)
| ❌
| [✔️](go%2F0778-swim-in-rising-water.go)
| ❌
| [✔️](java%2F0778-swim-in-rising-water.java)
| [✔️](javascript%2F0778-swim-in-rising-water.js)
| [✔️](kotlin%2F0778-swim-in-rising-water.kt)
| [✔️](python%2F0778-swim-in-rising-water.py)
| ❌
| [✔️](rust%2F0778-swim-in-rising-water.rs)
| ❌
| [✔️](swift%2F0778-swim-in-rising-water.swift)
| [✔️](typescript%2F0778-swim-in-rising-water.ts)
+[0269 - Alien Dictionary](https://leetcode.com/problems/alien-dictionary/) | ❌
| ❌
| [✔️](cpp%2F0269-alien-dictionary.cpp)
| [✔️](csharp%2F0269-alien-dictionary.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0269-alien-dictionary.java)
| [✔️](javascript%2F0269-alien-dictionary.js)
| ❌
| [✔️](python%2F0269-alien-dictionary.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0269-alien-dictionary.swift)
| ❌
+[0787 - Cheapest Flights Within K Stops](https://leetcode.com/problems/cheapest-flights-within-k-stops/) | ❌
| ❌
| [✔️](cpp%2F0787-cheapest-flights-within-k-stops.cpp)
| [✔️](csharp%2F0787-cheapest-flights-within-k-stops.cs)
| ❌
| [✔️](go%2F0787-cheapest-flights-within-k-stops.go)
| ❌
| [✔️](java%2F0787-cheapest-flights-within-k-stops.java)
| [✔️](javascript%2F0787-cheapest-flights-within-k-stops.js)
| [✔️](kotlin%2F0787-cheapest-flights-within-k-stops.kt)
| [✔️](python%2F0787-cheapest-flights-within-k-stops.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0787-cheapest-flights-within-k-stops.swift)
| [✔️](typescript%2F0787-cheapest-flights-within-k-stops.ts)
+[2421 - Number of Good Paths](https://leetcode.com/problems/number-of-good-paths/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F2421-number-of-good-paths.go)
| ❌
| ❌
| [✔️](javascript%2F2421-number-of-good-paths.js)
| [✔️](kotlin%2F2421-number-of-good-paths.kt)
| ❌
| ❌
| [✔️](rust%2F2421-number-of-good-paths.rs)
| ❌
| ❌
| [✔️](typescript%2F2421-number-of-good-paths.ts)
+[1579 - Remove Max Number of Edges to Keep Graph Fully Traversable](https://leetcode.com/problems/remove-max-number-of-edges-to-keep-graph-fully-traversable/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1579-remove-max-number-of-edges-to-keep-graph-fully-traversable.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1489 - Find Critical and Pseudo Critical Edges in Minimum Spanning Tree](https://leetcode.com/problems/find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1489-find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree.kt)
| [✔️](python%2F1489-find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F1489-find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree.swift)
| [✔️](typescript%2F1489-find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree.ts)
+
+### 1-D Dynamic Programming
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0070 - Climbing Stairs](https://leetcode.com/problems/climbing-stairs/) | ❌
| [✔️](c%2F0070-climbing-stairs.c)
| [✔️](cpp%2F0070-climbing-stairs.cpp)
| [✔️](csharp%2F0070-climbing-stairs.cs)
| [✔️](dart%2F0070-climbing-stairs.dart)
| [✔️](go%2F0070-climbing-stairs.go)
| ❌
| [✔️](java%2F0070-climbing-stairs.java)
| [✔️](javascript%2F0070-climbing-stairs.js)
| [✔️](kotlin%2F0070-climbing-stairs.kt)
| [✔️](python%2F0070-climbing-stairs.py)
| [✔️](ruby%2F0070-climbing-stairs.rb)
| [✔️](rust%2F0070-climbing-stairs.rs)
| [✔️](scala%2F0070-climbing-stairs.scala)
| [✔️](swift%2F0070-climbing-stairs.swift)
| [✔️](typescript%2F0070-climbing-stairs.ts)
+[0746 - Min Cost Climbing Stairs](https://leetcode.com/problems/min-cost-climbing-stairs/) | ❌
| [✔️](c%2F0746-min-cost-climbing-stairs.c)
| [✔️](cpp%2F0746-min-cost-climbing-stairs.cpp)
| [✔️](csharp%2F0746-min-cost-climbing-stairs.cs)
| [✔️](dart%2F0746-min-cost-climbing-stairs.dart)
| [✔️](go%2F0746-min-cost-climbing-stairs.go)
| ❌
| [✔️](java%2F0746-min-cost-climbing-stairs.java)
| [✔️](javascript%2F0746-min-cost-climbing-stairs.js)
| [✔️](kotlin%2F0746-min-cost-climbing-stairs.kt)
| [✔️](python%2F0746-min-cost-climbing-stairs.py)
| [✔️](ruby%2F0746-min-cost-climbing-stairs.rb)
| [✔️](rust%2F0746-min-cost-climbing-stairs.rs)
| [✔️](scala%2F0746-min-cost-climbing-stairs.scala)
| [✔️](swift%2F0746-min-cost-climbing-stairs.swift)
| [✔️](typescript%2F0746-min-cost-climbing-stairs.ts)
+[0198 - House Robber](https://leetcode.com/problems/house-robber/) | ❌
| [✔️](c%2F0198-house-robber.c)
| [✔️](cpp%2F0198-house-robber.cpp)
| [✔️](csharp%2F0198-house-robber.cs)
| ❌
| [✔️](go%2F0198-house-robber.go)
| ❌
| [✔️](java%2F0198-house-robber.java)
| [✔️](javascript%2F0198-house-robber.js)
| [✔️](kotlin%2F0198-house-robber.kt)
| [✔️](python%2F0198-house-robber.py)
| [✔️](ruby%2F0198-house-robber.rb)
| [✔️](rust%2F0198-house-robber.rs)
| [✔️](scala%2F0198-house-robber.scala)
| [✔️](swift%2F0198-house-robber.swift)
| [✔️](typescript%2F0198-house-robber.ts)
+[0213 - House Robber II](https://leetcode.com/problems/house-robber-ii/) | ❌
| [✔️](c%2F0213-house-robber-ii.c)
| [✔️](cpp%2F0213-house-robber-ii.cpp)
| [✔️](csharp%2F0213-house-robber-ii.cs)
| ❌
| [✔️](go%2F0213-house-robber-ii.go)
| ❌
| [✔️](java%2F0213-house-robber-ii.java)
| [✔️](javascript%2F0213-house-robber-ii.js)
| [✔️](kotlin%2F0213-house-robber-ii.kt)
| [✔️](python%2F0213-house-robber-ii.py)
| [✔️](ruby%2F0213-house-robber-ii.rb)
| [✔️](rust%2F0213-house-robber-ii.rs)
| [✔️](scala%2F0213-house-robber-ii.scala)
| [✔️](swift%2F0213-house-robber-ii.swift)
| [✔️](typescript%2F0213-house-robber-ii.ts)
+[0005 - Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/) | ❌
| [✔️](c%2F0005-longest-palindromic-substring.c)
| [✔️](cpp%2F0005-longest-palindromic-substring.cpp)
| [✔️](csharp%2F0005-longest-palindromic-substring.cs)
| ❌
| [✔️](go%2F0005-Longest-Palindromic-Substring.go)
| ❌
| [✔️](java%2F0005-longest-palindromic-substring.java)
| [✔️](javascript%2F0005-longest-palindromic-substring.js)
| [✔️](kotlin%2F0005-longest-palindromic-substring.kt)
| [✔️](python%2F0005-longest-palindromic-substring.py)
| ❌
| [✔️](rust%2F0005-longest-palindromic-substring.rs)
| ❌
| [✔️](swift%2F0005-longest-palindromic-substring.swift)
| [✔️](typescript%2F0005-longest-palindromic-substring.ts)
+[0647 - Palindromic Substrings](https://leetcode.com/problems/palindromic-substrings/) | ❌
| [✔️](c%2F0647-palindromic-substrings.c)
| [✔️](cpp%2F0647-palindromic-substrings.cpp)
| [✔️](csharp%2F0647-palindromic-substrings.cs)
| ❌
| [✔️](go%2F0647-palindromic-substrings.go)
| ❌
| [✔️](java%2F0647-palindromic-substrings.java)
| [✔️](javascript%2F0647-palindromic-substrings.js)
| [✔️](kotlin%2F0647-palindromic-substrings.kt)
| [✔️](python%2F0647-palindromic-substrings.py)
| ❌
| [✔️](rust%2F0647-palindromic-substrings.rs)
| ❌
| [✔️](swift%2F0647-palindromic-substrings.swift)
| [✔️](typescript%2F0647-palindromic-substrings.ts)
+[0091 - Decode Ways](https://leetcode.com/problems/decode-ways/) | ❌
| [✔️](c%2F0091-decode-ways.c)
| [✔️](cpp%2F0091-decode-ways.cpp)
| [✔️](csharp%2F0091-decode-ways.cs)
| ❌
| [✔️](go%2F0091-decode-ways.go)
| ❌
| [✔️](java%2F0091-decode-ways.java)
| [✔️](javascript%2F0091-decode-ways.js)
| [✔️](kotlin%2F0091-decode-ways.kt)
| [✔️](python%2F0091-decode-ways.py)
| ❌
| [✔️](rust%2F0091-decode-ways.rs)
| [✔️](scala%2F0091-decode-ways.scala)
| [✔️](swift%2F0091-decode-ways.swift)
| [✔️](typescript%2F0091-decode-ways.ts)
+[0322 - Coin Change](https://leetcode.com/problems/coin-change/) | ❌
| [✔️](c%2F0322-coin-change.c)
| [✔️](cpp%2F0322-coin-change.cpp)
| [✔️](csharp%2F0322-coin-change.cs)
| ❌
| [✔️](go%2F0322-coin-change.go)
| ❌
| [✔️](java%2F0322-coin-change.java)
| [✔️](javascript%2F0322-coin-change.js)
| [✔️](kotlin%2F0322-coin-change.kt)
| [✔️](python%2F0322-coin-change.py)
| ❌
| [✔️](rust%2F0322-coin-change.rs)
| [✔️](scala%2F0322-coin-change.scala)
| [✔️](swift%2F0322-coin-change.swift)
| [✔️](typescript%2F0322-coin-change.ts)
+[0152 - Maximum Product Subarray](https://leetcode.com/problems/maximum-product-subarray/) | ❌
| [✔️](c%2F0152-maximum-product-subarray.c)
| [✔️](cpp%2F0152-maximum-product-subarray.cpp)
| [✔️](csharp%2F0152-maximum-product-subarray.cs)
| ❌
| [✔️](go%2F0152-maximum-product-subarray.go)
| ❌
| [✔️](java%2F0152-maximum-product-subarray.java)
| [✔️](javascript%2F0152-maximum-product-subarray.js)
| [✔️](kotlin%2F0152-maximum-product-subarray.kt)
| [✔️](python%2F0152-maximum-product-subarray.py)
| [✔️](ruby%2F0152-maximum-product-subarray.rb)
| [✔️](rust%2F0152-maximum-product-subarray.rs)
| ❌
| [✔️](swift%2F0152-maximum-product-subarray.swift)
| [✔️](typescript%2F0152-maximum-product-subarray.ts)
+[0139 - Word Break](https://leetcode.com/problems/word-break/) | ❌
| ❌
| [✔️](cpp%2F0139-word-break.cpp)
| [✔️](csharp%2F0139-word-break.cs)
| ❌
| [✔️](go%2F0139-word-break.go)
| ❌
| [✔️](java%2F0139-word-break.java)
| [✔️](javascript%2F0139-word-break.js)
| [✔️](kotlin%2F0139-word-break.kt)
| [✔️](python%2F0139-word-break.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0139-word-break.swift)
| [✔️](typescript%2F0139-word-break.ts)
+[0300 - Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/) | ❌
| [✔️](c%2F0300-longest-increasing-subsequence.c)
| [✔️](cpp%2F0300-longest-increasing-subsequence.cpp)
| [✔️](csharp%2F0300-longest-increasing-subsequence.cs)
| ❌
| [✔️](go%2F0300-longest-increasing-subsequence.go)
| ❌
| [✔️](java%2F0300-longest-increasing-subsequence.java)
| [✔️](javascript%2F0300-longest-increasing-subsequence.js)
| [✔️](kotlin%2F0300-longest-increasing-subsequence.kt)
| [✔️](python%2F0300-longest-increasing-subsequence.py)
| ❌
| [✔️](rust%2F0300-longest-increasing-subsequence.rs)
| ❌
| [✔️](swift%2F0300-longest-increasing-subsequence.swift)
| [✔️](typescript%2F0300-longest-increasing-subsequence.ts)
+[0416 - Partition Equal Subset Sum](https://leetcode.com/problems/partition-equal-subset-sum/) | ❌
| [✔️](c%2F0416-partition-equal-subset-sum.c)
| [✔️](cpp%2F0416-partition-equal-subset-sum.cpp)
| [✔️](csharp%2F0416-partition-equal-subset-sum.cs)
| ❌
| [✔️](go%2F0416-partition-equal-subset-sum.go)
| ❌
| [✔️](java%2F0416-partition-equal-subset-sum.java)
| [✔️](javascript%2F0416-partition-equal-subset-sum.js)
| [✔️](kotlin%2F0416-partition-equal-subset-sum.kt)
| [✔️](python%2F0416-partition-equal-subset-sum.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0416-partition-equal-subset-sum.swift)
| ❌
+[0120 - Triangle](https://leetcode.com/problems/triangle/) | ❌
| [✔️](c%2F0120-triangle.c)
| [✔️](cpp%2F0120-triangle.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0120-triangle.java)
| ❌
| [✔️](kotlin%2F0120-triangle.kt)
| [✔️](python%2F0120-triangle.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0740 - Delete And Earn](https://leetcode.com/problems/delete-and-earn/) | ❌
| [✔️](c%2F0740-delete-and-earn.c)
| [✔️](cpp%2F0740-delete-and-earn.cpp)
| ❌
| ❌
| [✔️](go%2F0740-delete-and-earn.go)
| ❌
| [✔️](java%2F0740-delete-and-earn.java)
| ❌
| [✔️](kotlin%2F0740-delete-and-earn.kt)
| [✔️](python%2F0740-delete-and-earn.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0256 - Paint House](https://leetcode.com/problems/paint-house/) | ❌
| ❌
| ❌
| [✔️](csharp%2F0256-paint-house.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0256-paint-house.java)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F0256-paint-house.ts)
+[0377 - Combination Sum IV](https://leetcode.com/problems/combination-sum-iv/) | ❌
| [✔️](c%2F0377-combination-sum-iv.c)
| [✔️](cpp%2F0377-combination-sum-iv.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0377-combination-sum-iv.java)
| ❌
| [✔️](kotlin%2F0377-combination-sum-iv.kt)
| [✔️](python%2F0377-combination-sum-iv.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0279 - Perfect Squares](https://leetcode.com/problems/perfect-squares/) | ❌
| [✔️](c%2F0279-perfect-squares.c)
| [✔️](cpp%2F0279-perfect-squares.cpp)
| ❌
| ❌
| [✔️](go%2F0279-perfect-squares.go)
| ❌
| [✔️](java%2F0279-perfect-squares.java)
| ❌
| [✔️](kotlin%2F0279-perfect-squares.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2369 - Check if There is a Valid Partition For The Array](https://leetcode.com/problems/check-if-there-is-a-valid-partition-for-the-array/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F2369-check-if-there-is-a-valid-partition-for-the-array.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1856 - Maximum Subarray Min Product](https://leetcode.com/problems/maximum-subarray-min-product/) | ❌
| [✔️](c%2F1856-maximum-subarray-min-product.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1856-maximum-subarray-min-product.java)
| ❌
| [✔️](kotlin%2F1856-maximum-subarray-min-product.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0983 - Minimum Cost For Tickets](https://leetcode.com/problems/minimum-cost-for-tickets/) | ❌
| [✔️](c%2F0983-minimum-cost-for-tickets.c)
| [✔️](cpp%2F0983-minimum-cost-for-tickets.cpp)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F0983-minimum-cost-for-tickets.kt)
| ❌
| ❌
| ❌
| ❌
| [✔️](swift%2F0983-minimum-cost-for-tickets.swift)
| [✔️](typescript%2F0983-minimum-cost-for-tickets.ts)
+[0343 - Integer Break](https://leetcode.com/problems/integer-break/) | ❌
| [✔️](c%2F0343-integer-break.c)
| [✔️](cpp%2F0343-integer-break.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0343-integer-break.java)
| ❌
| [✔️](kotlin%2F0343-integer-break.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0673 - Number of Longest Increasing Subsequence](https://leetcode.com/problems/number-of-longest-increasing-subsequence/) | ❌
| [✔️](c%2F0673-number-of-longest-increasing-subsequence.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0673-number-of-longest-increasing-subsequence.java)
| ❌
| [✔️](kotlin%2F0673-number-of-longest-increasing-subsequence.kt)
| [✔️](python%2F0673-number-of-longest-increasing-subsequence.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0691 - Stickers to Spell Word](https://leetcode.com/problems/stickers-to-spell-word/) | ❌
| [✔️](c%2F0691-stickers-to-spell-word.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F0691-stickers-to-spell-word.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1137 - N-th Tribonacci Number](https://leetcode.com/problems/n-th-tribonacci-number/) | ❌
| [✔️](c%2F1137-n-th-tribonacci-number.c)
| [✔️](cpp%2F1137-n-th-tribonacci-number.cpp)
| [✔️](csharp%2F1137-n-th-tribonacci-number.cs)
| ❌
| [✔️](go%2F1137-n-th-tribonacci-number.go)
| ❌
| ❌
| [✔️](javascript%2F1137-n-th-tribonacci-number.js)
| [✔️](kotlin%2F1137-n-th-tribonacci-number.kt)
| [✔️](python%2F1137-n-th-tribonacci-number.py)
| ❌
| [✔️](rust%2F1137-n-th-tribonacci-number.rs)
| ❌
| ❌
| [✔️](typescript%2F1137-n-th-tribonacci-number.ts)
+[1035 - Uncrossed Lines](https://leetcode.com/problems/uncrossed-lines/) | ❌
| [✔️](c%2F1035-uncrossed-lines.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1035-uncrossed-lines.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2140 - Solving Questions With Brainpower](https://leetcode.com/problems/solving-questions-with-brainpower/) | ❌
| [✔️](c%2F2140-solving-questions-with-brainpower.c)
| [✔️](cpp%2F2140-solving-questions-with-brainpower.cpp)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F2140-solving-questions-with-brainpower.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2466 - Count Ways to Build Good Strings](https://leetcode.com/problems/count-ways-to-build-good-strings/) | ❌
| [✔️](c%2F2466-count-ways-to-build-good-strings.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F2466-count-ways-to-build-good-strings.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0837 - New 21 Game](https://leetcode.com/problems/new-21-game/) | ❌
| [✔️](c%2F0837-new-21-game.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0837-new-21-game.java)
| [✔️](javascript%2F0837-new-21-game.js)
| [✔️](kotlin%2F0837-new-21-game.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1626 - Best Team with no Conflicts](https://leetcode.com/problems/best-team-with-no-conflicts/) | ❌
| [✔️](c%2F1626-best-team-with-no-conflicts.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1626-best-team-with-no-conflicts.java)
| ❌
| [✔️](kotlin%2F1626-best-team-with-no-conflicts.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1406 - Stone Game III](https://leetcode.com/problems/stone-game-iii/) | ❌
| [✔️](c%2F1406-stone-game-iii.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1406-stone-game-iii.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0472 - Concatenated Words](https://leetcode.com/problems/concatenated-words/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F0472-concatenated-words.go)
| ❌
| ❌
| [✔️](javascript%2F0472-concatenated-words.js)
| [✔️](kotlin%2F0472-concatenated-words.kt)
| ❌
| ❌
| [✔️](rust%2F0472-concatenated-words.rs)
| ❌
| ❌
| [✔️](typescript%2F0472-concatenated-words.ts)
+[1799 - Maximize Score after N Operations](https://leetcode.com/problems/maximize-score-after-n-operations/) | ❌
| [✔️](c%2F1799-maximize-score-after-n-operations.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1799-maximize-score-after-n-operations.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1964 - Find the Longest Valid Obstacle Course at Each Position](https://leetcode.com/problems/find-the-longest-valid-obstacle-course-at-each-position/) | ❌
| [✔️](c%2F1964-find-the-longest-valid-obstacle-course-at-each-position.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1964-find-the-longest-valid-obstacle-course-at-each-position.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1359 - Count all Valid Pickup and Delivery Options](https://leetcode.com/problems/count-all-valid-pickup-and-delivery-options/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1359-count-all-valid-pickup-and-delivery-options.java)
| ❌
| [✔️](kotlin%2F1359-count-all-valid-pickup-and-delivery-options.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+
+### 2-D Dynamic Programming
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0062 - Unique Paths](https://leetcode.com/problems/unique-paths/) | ❌
| [✔️](c%2F0062-unique-paths.c)
| [✔️](cpp%2F0062-unique-paths.cpp)
| [✔️](csharp%2F0062-unique-paths.cs)
| ❌
| [✔️](go%2F0062-unique-paths.go)
| ❌
| [✔️](java%2F0062-unique-paths.java)
| [✔️](javascript%2F0062-unique-paths.js)
| [✔️](kotlin%2F0062-unique-paths.kt)
| [✔️](python%2F0062-unique-paths.py)
| ❌
| [✔️](rust%2F0062-unique-paths.rs)
| ❌
| [✔️](swift%2F0062-unique-paths.swift)
| [✔️](typescript%2F0062-unique-paths.ts)
+[0063 - Unique Paths II](https://leetcode.com/problems/unique-paths-ii/) | ❌
| ❌
| [✔️](cpp%2F0063-unique-paths-ii.cpp)
| [✔️](csharp%2F0063-unique-paths-ii.cs)
| ❌
| [✔️](go%2F0063-unique-paths-ii.go)
| ❌
| [✔️](java%2F0063-unique-paths-ii.java)
| ❌
| [✔️](kotlin%2F0063-unique-paths-ii.kt)
| [✔️](python%2F0063-unique-paths-ii.py)
| ❌
| [✔️](rust%2F0063-unique-paths-ii.rs)
| ❌
| [✔️](swift%2F0063-unique-paths-ii.swift)
| ❌
+[1143 - Longest Common Subsequence](https://leetcode.com/problems/longest-common-subsequence/) | ❌
| [✔️](c%2F1143-longest-common-subsequence.c)
| [✔️](cpp%2F1143-Longest-Common-Subsequence.cpp)
| [✔️](csharp%2F1143-Longest-Common-Subsequence.cs)
| [✔️](dart%2F1143-longest-common-subsequence.dart)
| [✔️](go%2F1143-Longest-Common-Subsequence.go)
| ❌
| [✔️](java%2F1143-longest-common-subsequence.java)
| [✔️](javascript%2F1143-Longest-Common-Subsequence.js)
| [✔️](kotlin%2F1143-Longest-Common-Subsequence.kt)
| [✔️](python%2F1143-longest-common-subsequence.py)
| ❌
| [✔️](rust%2F1143-Longest-Common-Subsequence.rs)
| ❌
| [✔️](swift%2F1143-Longest-Common-Subsequence.swift)
| [✔️](typescript%2F1143-Longest-Common-Subsequence.ts)
+[0516 - Longest Palindromic Subsequence](https://leetcode.com/problems/longest-palindromic-subsequence/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F0516-longest-palindromic-subsequence.kt)
| [✔️](python%2F0516-longest-palindromic-subsequence.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0516-longest-palindromic-subsequence.swift)
| ❌
+[1049 - Last Stone Weight II](https://leetcode.com/problems/last-stone-weight-ii/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1049-last-stone-weight-ii.kt)
| [✔️](python%2F1049-last-stone-weight-ii.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F1049-last-stone-weight-ii.swift)
| [✔️](typescript%2F1049-last-stone-weight-ii.ts)
+[0309 - Best Time to Buy And Sell Stock With Cooldown](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | ❌
| [✔️](c%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.c)
| [✔️](cpp%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.cpp)
| [✔️](csharp%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.cs)
| ❌
| [✔️](go%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.go)
| ❌
| [✔️](java%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.java)
| [✔️](javascript%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.js)
| [✔️](kotlin%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.kt)
| [✔️](python%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.py)
| ❌
| [✔️](rust%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.rs)
| ❌
| [✔️](swift%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.swift)
| [✔️](typescript%2F0309-best-time-to-buy-and-sell-stock-with-cooldown.ts)
+[0518 - Coin Change II](https://leetcode.com/problems/coin-change-ii/) | ❌
| [✔️](c%2F0518-coin-change-ii.c)
| [✔️](cpp%2F0518-coin-change-ii.cpp)
| [✔️](csharp%2F0518-coin-change-ii.cs)
| ❌
| [✔️](go%2F0518-coin-change-ii.go)
| ❌
| [✔️](java%2F0518-coin-change-ii.java)
| [✔️](javascript%2F0518-coin-change-ii.js)
| [✔️](kotlin%2F0518-coin-change-ii.kt)
| [✔️](python%2F0518-coin-change-ii.py)
| ❌
| [✔️](rust%2F0518-coin-change-ii.rs)
| ❌
| [✔️](swift%2F0518-coin-change-ii.swift)
| [✔️](typescript%2F0518-coin-change-ii.ts)
+[0494 - Target Sum](https://leetcode.com/problems/target-sum/) | ❌
| [✔️](c%2F0494-target-sum.c)
| [✔️](cpp%2F0494-target-sum.cpp)
| [✔️](csharp%2F0494-target-sum.cs)
| ❌
| [✔️](go%2F0494-target-sum.go)
| ❌
| [✔️](java%2F0494-target-sum.java)
| [✔️](javascript%2F0494-target-sum.js)
| [✔️](kotlin%2F0494-target-sum.kt)
| [✔️](python%2F0494-target-sum.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0494-target-sum.swift)
| [✔️](typescript%2F0494-target-sum.ts)
+[0097 - Interleaving String](https://leetcode.com/problems/interleaving-string/) | ❌
| [✔️](c%2F0097-interleaving-string.c)
| [✔️](cpp%2F0097-interleaving-string.cpp)
| [✔️](csharp%2F0097-interleaving-string.cs)
| ❌
| [✔️](go%2F0097-interleaving-string.go)
| ❌
| [✔️](java%2F0097-interleaving-string.java)
| [✔️](javascript%2F0097-interleaving-string.js)
| [✔️](kotlin%2F0097-interleaving-string.kt)
| [✔️](python%2F0097-interleaving-string.py)
| ❌
| ❌
| [✔️](scala%2F0097-interleaving-string.scala)
| [✔️](swift%2F0097-interleaving-string.swift)
| [✔️](typescript%2F0097-interleaving-string.ts)
+[0877 - Stone Game](https://leetcode.com/problems/stone-game/) | ❌
| ❌
| [✔️](cpp%2F0877-stone-game.cpp)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F0877-stone-game.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0064 - Minimum Path Sum](https://leetcode.com/problems/minimum-path-sum/) | ❌
| ❌
| [✔️](cpp%2F0064-minimum-path-sum.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0064-minimum-path-sum.java)
| ❌
| [✔️](kotlin%2F0064-minimum-path-sum.kt)
| [✔️](python%2F0064-minimum-path-sum.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0329 - Longest Increasing Path In a Matrix](https://leetcode.com/problems/longest-increasing-path-in-a-matrix/) | ❌
| [✔️](c%2F0329-longest-increasing-path-in-a-matrix.c)
| [✔️](cpp%2F0329-longest-increasing-path-in-a-matrix.cpp)
| [✔️](csharp%2F0329-longest-increasing-path-in-a-matrix.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0329-longest-increasing-path-in-a-matrix.java)
| [✔️](javascript%2F0329-longest-increasing-path-in-a-matrix.js)
| [✔️](kotlin%2F0329-longest-increasing-path-in-a-matrix.kt)
| [✔️](python%2F0329-longest-increasing-path-in-a-matrix.py)
| ❌
| [✔️](rust%2F0329-longest-increasing-path-in-a-matrix.rs)
| ❌
| [✔️](swift%2F0329-longest-increasing-path-in-a-matrix.swift)
| ❌
+[0221 - Maximal Square](https://leetcode.com/problems/maximal-square/) | ❌
| ❌
| [✔️](cpp%2F0221-maximal-square.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0221-maximal-square.java)
| ❌
| [✔️](kotlin%2F0221-maximal-square.kt)
| [✔️](python%2F0221-maximal-square.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0474 - Ones and Zeroes](https://leetcode.com/problems/ones-and-zeroes/) | ❌
| ❌
| [✔️](cpp%2F0474-ones-and-zeroes.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0474-ones-and-zeroes.java)
| ❌
| [✔️](kotlin%2F0474-ones-and-zeroes.kt)
| [✔️](python%2F0474-ones-and-zeroes.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0474-ones-and-zeroes.swift)
| [✔️](typescript%2F0474-ones-and-zeroes.ts)
+[5782 - Maximum Alternating Subsequence Sum](https://leetcode.com/problems/maximum-alternating-subsequence-sum/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0115 - Distinct Subsequences](https://leetcode.com/problems/distinct-subsequences/) | ❌
| [✔️](c%2F0115-distinct-subsequences.c)
| [✔️](cpp%2F0115-distinct-subsequences.cpp)
| [✔️](csharp%2F0115-distinct-subsequences.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0115-distinct-subsequences.java)
| [✔️](javascript%2F0115-distinct-subsequences.js)
| [✔️](kotlin%2F0115-distinct-subsequences.kt)
| [✔️](python%2F0115-distinct-subsequences.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0115-distinct-subsequences.swift)
| [✔️](typescript%2F0115-distinct-subsequences.ts)
+[0072 - Edit Distance](https://leetcode.com/problems/edit-distance/) | ❌
| [✔️](c%2F0072-edit-distance.c)
| [✔️](cpp%2F0072-edit-distance.cpp)
| [✔️](csharp%2F0072-edit-distance.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0072-edit-distance.java)
| [✔️](javascript%2F0072-edit-distance.js)
| [✔️](kotlin%2F0072-edit-distance.kt)
| [✔️](python%2F0072-edit-distance.py)
| ❌
| [✔️](rust%2F0072-edit-distance.rs)
| [✔️](scala%2F0072-edit-distance.scala)
| [✔️](swift%2F0072-edit-distance.swift)
| [✔️](typescript%2F0072-edit-distance.ts)
+[1220 - Count Vowels Permutation](https://leetcode.com/problems/count-vowels-permutation/) | ❌
| ❌
| [✔️](cpp%2F1220-count-vowels-permutation.cpp)
| ❌
| ❌
| [✔️](go%2F1220-count-vowels-permutation.go)
| ❌
| [✔️](java%2F1220-count-vowels-permutation.java)
| ❌
| [✔️](kotlin%2F1220-count-vowels-permutation.kt)
| [✔️](python%2F1220-count-vowels-permutation.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0312 - Burst Balloons](https://leetcode.com/problems/burst-balloons/) | ❌
| [✔️](c%2F0312-burst-balloons.c)
| [✔️](cpp%2F0312-burst-balloons.cpp)
| [✔️](csharp%2F0312-burst-balloons.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0312-burst-balloons.java)
| [✔️](javascript%2F0312-burst-balloons.js)
| [✔️](kotlin%2F0312-burst-balloons.kt)
| [✔️](python%2F0312-burst-balloons.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0312-burst-balloons.swift)
| [✔️](typescript%2F0312-burst-balloons.ts)
+[1866 - Number of Ways to Rearrange Sticks With K Sticks Visible](https://leetcode.com/problems/number-of-ways-to-rearrange-sticks-with-k-sticks-visible/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1866-number-of-ways-to-rearrange-sticks-with-k-sticks-visible.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0010 - Regular Expression Matching](https://leetcode.com/problems/regular-expression-matching/) | ❌
| [✔️](c%2F0010-regular-expression-matching.c)
| [✔️](cpp%2F0010-regular-expression-matching.cpp)
| [✔️](csharp%2F0010-regular-expression-matching.cs)
| ❌
| [✔️](go%2F0010-regular-expression-matching.go)
| ❌
| [✔️](java%2F0010-regular-expression-matching.java)
| [✔️](javascript%2F0010-regular-expression-matching.js)
| [✔️](kotlin%2F0010-regular-expression-matching.kt)
| [✔️](python%2F0010-regular-expression-matching.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0010-regular-expression-matching.swift)
| [✔️](typescript%2F0010-regular-expression-matching.ts)
+[1140 - Stone Game II](https://leetcode.com/problems/stone-game-ii/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1140-stone-game-ii.java)
| ❌
| [✔️](kotlin%2F1140-stone-game-ii.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0926 - Flip String to Monotone Increasing](https://leetcode.com/problems/flip-string-to-monotone-increasing/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F0926-flip-string-to-monotone-increasing.go)
| ❌
| ❌
| [✔️](javascript%2F0926-flip-string-to-monotone-increasing.js)
| [✔️](kotlin%2F0926-flip-string-to-monotone-increasing.kt)
| ❌
| ❌
| [✔️](rust%2F0926-flip-string-to-monotone-increasing.rs)
| ❌
| ❌
| [✔️](typescript%2F0926-flip-string-to-monotone-increasing.ts)
+[2218 - Maximum Value of K Coins from Piles](https://leetcode.com/problems/maximum-value-of-k-coins-from-piles/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F2218-maximum-value-of-k-coins-from-piles.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0920 - Number of Music Playlists](https://leetcode.com/problems/number-of-music-playlists/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0920-number-of-music-playlists.java)
| ❌
| [✔️](kotlin%2F0920-number-of-music-playlists.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1639 - Number of Ways to Form a Target String Given a Dictionary](https://leetcode.com/problems/number-of-ways-to-form-a-target-string-given-a-dictionary/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1639-number-of-ways-to-form-a-target-string-given-a-dictionary.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0879 - Profitable Schemes](https://leetcode.com/problems/profitable-schemes/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F0879-profitable-schemes.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1547 - Minimum Cost to Cut a Stick](https://leetcode.com/problems/minimum-cost-to-cut-a-stick/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1547-minimum-cost-to-cut-a-stick.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+
+### Greedy
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0053 - Maximum Subarray](https://leetcode.com/problems/maximum-subarray/) | ❌
| [✔️](c%2F0053-maximum-subarray.c)
| [✔️](cpp%2F0053-maximum-subarray.cpp)
| [✔️](csharp%2F0053-maximum-subarray.cs)
| ❌
| [✔️](go%2F0053-maximum-subarray.go)
| ❌
| [✔️](java%2F0053-maximum-subarray.java)
| [✔️](javascript%2F0053-maximum-subarray.js)
| [✔️](kotlin%2F0053-maximum-subarray.kt)
| [✔️](python%2F0053-maximum-subarray.py)
| [✔️](ruby%2F0053-maximum-subarray.rb)
| [✔️](rust%2F0053-maximum-subarray.rs)
| ❌
| [✔️](swift%2F0053-maximum-subarray.swift)
| [✔️](typescript%2F0053-maximum-subarray.ts)
+[0918 - Maximum Sum Circular Subarray](https://leetcode.com/problems/maximum-sum-circular-subarray/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F0918-maximum-sum-circular-subarray.go)
| ❌
| [✔️](java%2F0918-maximum-sum-circular-subarray.java)
| [✔️](javascript%2F0918-maximum-sum-circular-subarray.js)
| [✔️](kotlin%2F0918-maximum-sum-circular-subarray.kt)
| [✔️](python%2F0918-maximum-sum-circular-subarray.py)
| ❌
| [✔️](rust%2F0918-maximum-sum-circular-subarray.rs)
| ❌
| [✔️](swift%2F0918-maximum-sum-circular-subarray.swift)
| [✔️](typescript%2F0918-maximum-sum-circular-subarray.ts)
+[0978 - Longest Turbulent Array](https://leetcode.com/problems/longest-turbulent-subarray/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F0978-longest-turbulent-subarray.js)
| [✔️](kotlin%2F0978-longest-turbulent-subarray.kt)
| [✔️](python%2F0978-longest-turbulent-subarray.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0978-longest-turbulent-subarray.swift)
| ❌
+[0055 - Jump Game](https://leetcode.com/problems/jump-game/) | ❌
| [✔️](c%2F0055-jump-game.c)
| [✔️](cpp%2F0055-jump-game.cpp)
| [✔️](csharp%2F0055-jump-game.cs)
| ❌
| [✔️](go%2F0055-jump-game.go)
| ❌
| [✔️](java%2F0055-jump-game.java)
| [✔️](javascript%2F0055-jump-game.js)
| [✔️](kotlin%2F0055-jump-game.kt)
| [✔️](python%2F0055-jump-game.py)
| ❌
| [✔️](rust%2F0055-jump-game.rs)
| ❌
| [✔️](swift%2F0055-jump-game.swift)
| [✔️](typescript%2F0055-jump-game.ts)
+[0045 - Jump Game II](https://leetcode.com/problems/jump-game-ii/) | ❌
| [✔️](c%2F0045-jump-game-ii.c)
| [✔️](cpp%2F0045-jump-game-ii.cpp)
| [✔️](csharp%2F0045-jump-game-ii.cs)
| ❌
| [✔️](go%2F0045-jump-game-ii.go)
| ❌
| [✔️](java%2F0045-jump-game-ii.java)
| [✔️](javascript%2F0045-jump-game-ii.js)
| [✔️](kotlin%2F0045-jump-game-ii.kt)
| [✔️](python%2F0045-jump-game-ii.py)
| [✔️](ruby%2F0045-jump-game-ii.rb)
| [✔️](rust%2F0045-jump-game-ii.rs)
| ❌
| [✔️](swift%2F0045-jump-game-ii.swift)
| [✔️](typescript%2F0045-jump-game-ii.ts)
+[1871 - Jump Game VII](https://leetcode.com/problems/jump-game-vii/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1871-jump-game-vii.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0134 - Gas Station](https://leetcode.com/problems/gas-station/) | ❌
| [✔️](c%2F0134-gas-station.c)
| [✔️](cpp%2F0134-gas-station.cpp)
| [✔️](csharp%2F0134-gas-station.cs)
| ❌
| [✔️](go%2F0134-gas-station.go)
| ❌
| [✔️](java%2F0134-gas-station.java)
| [✔️](javascript%2F0134-gas-station.js)
| [✔️](kotlin%2F0134-gas-station.kt)
| [✔️](python%2F0134-gas-station.py)
| [✔️](ruby%2F0134-gas-station.rb)
| ❌
| ❌
| [✔️](swift%2F0134-gas-station.swift)
| [✔️](typescript%2F0134-gas-station.ts)
+[0846 - Hand of Straights](https://leetcode.com/problems/hand-of-straights/) | ❌
| [✔️](c%2F0846-hand-of-straights.c)
| [✔️](cpp%2F0846-hand-of-straights.cpp)
| [✔️](csharp%2F0846-hand-of-straights.cs)
| ❌
| [✔️](go%2F0846-hand-of-straights.go)
| ❌
| [✔️](java%2F0846-hand-of-straights.java)
| [✔️](javascript%2F0846-hand-of-straights.js)
| [✔️](kotlin%2F0846-hand-of-straights.kt)
| [✔️](python%2F0846-hand-of-straights.py)
| [✔️](ruby%2F0846-hand-of-straights.rb)
| ❌
| ❌
| [✔️](swift%2F0846-hand-of-straights.swift)
| [✔️](typescript%2F0846-hand-of-straights.ts)
+[2439 - Minimize Maximum of Array](https://leetcode.com/problems/minimize-maximum-of-array/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2439-minimize-maximum-of-array.js)
| [✔️](kotlin%2F2439-minimize-maximum-of-array.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0649 - Dota2 Senate](https://leetcode.com/problems/dota2-senate/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F0649-dota2-senate.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1423 - Maximum Points You Can Obtain From Cards](https://leetcode.com/problems/maximum-points-you-can-obtain-from-cards/) | ❌
| ❌
| ❌
| [✔️](csharp%2F1423-Maximum-Points-You-Can-Obtain-from-Cards.cs)
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F1423-maximum-points-you-can-obtain-from-cards.js)
| [✔️](kotlin%2F1423-maximum-points-you-can-obtain-from-cards.kt)
| [✔️](python%2F1423-maximum-points-you-can-obtain-from-cards.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1899 - Merge Triplets to Form Target Triplet](https://leetcode.com/problems/merge-triplets-to-form-target-triplet/) | ❌
| [✔️](c%2F1899-merge-triplets-to-form-target-triplet.c)
| [✔️](cpp%2F1899-merge-triplets-to-form-target-triplet.cpp)
| [✔️](csharp%2F1899-Merge-Triplets-to-Form-Target-Triplet.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F1899-merge-triplets-to-form-target-triplet.java)
| [✔️](javascript%2F1899-merge-triplets-to-form-target-triplet.js)
| [✔️](kotlin%2F1899-merge-triplets-to-form-target-triplet.kt)
| [✔️](python%2F1899-merge-triplets-to-form-target-triplet.py)
| [✔️](ruby%2F1899-merge-triplets-to-form-target-triplet.rb)
| ❌
| ❌
| [✔️](swift%2F1899-Merge-Triplets-To-Form-Target-Triplet.swift)
| [✔️](typescript%2F1899-Merge-Triplets-to-Form-Target-Triplet.ts)
+[0763 - Partition Labels](https://leetcode.com/problems/partition-labels/) | ❌
| [✔️](c%2F0763-partition-labels.c)
| [✔️](cpp%2F0763-partition-labels.cpp)
| [✔️](csharp%2F0763-partition-labels.cs)
| ❌
| [✔️](go%2F0763-partition-labels.go)
| ❌
| [✔️](java%2F0763-partition-labels.java)
| [✔️](javascript%2F0763-partition-labels.js)
| [✔️](kotlin%2F0763-partition-labels.kt)
| [✔️](python%2F0763-partition-labels.py)
| [✔️](ruby%2F0763-partition-labels.rb)
| ❌
| ❌
| [✔️](swift%2F0763-partition-labels.swift)
| ❌
+[0678 - Valid Parenthesis String](https://leetcode.com/problems/valid-parenthesis-string/) | ❌
| [✔️](c%2F0678-valid-parenthesis-string.c)
| [✔️](cpp%2F0678-valid-parenthesis-string.cpp)
| [✔️](csharp%2F0678-valid-parenthesis-string.cs)
| ❌
| [✔️](go%2F0678-valid-parenthesis-string.go)
| ❌
| [✔️](java%2F0678-valid-parenthesis-string.java)
| [✔️](javascript%2F0678-valid-parenthesis-string.js)
| [✔️](kotlin%2F0678-valid-parenthesis-string.kt)
| [✔️](python%2F0678-valid-parenthesis-string.py)
| ❌
| [✔️](rust%2F0678-valid-parenthesis-string.rs)
| ❌
| [✔️](swift%2F0678-valid-parenthesis-string.swift)
| [✔️](typescript%2F0678-valid-parenthesis-string.ts)
+[1921 - Eliminate Maximum Number of Monsters](https://leetcode.com/problems/eliminate-maximum-number-of-monsters/) | ❌
| ❌
| [✔️](cpp%2F1921-eliminate-maximum-number-of-monsters.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1921-eliminate-maximum-number-of-monsters.java)
| [✔️](javascript%2F1921-eliminate-maximum-number-of-monsters.js)
| [✔️](kotlin%2F1921-eliminate-maximum-number-of-monsters.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1029 - Two City Scheduling](https://leetcode.com/problems/two-city-scheduling/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F1029-two-city-scheduling.go)
| ❌
| [✔️](java%2F1029-two-city-scheduling.java)
| [✔️](javascript%2F1029-two-city-scheduling.js)
| [✔️](kotlin%2F1029-two-city-scheduling.kt)
| [✔️](python%2F1029-two-city-scheduling.py)
| ❌
| [✔️](rust%2F1029-two-city-scheduling.rs)
| ❌
| ❌
| [✔️](typescript%2F1029-two-city-scheduling.ts)
+[0646 - Maximum Length of Pair Chain](https://leetcode.com/problems/maximum-length-of-pair-chain/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F0646-maximum-length-of-pair-chain.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[1647 - Minimum Deletions to Make Character Frequencies Unique](https://leetcode.com/problems/minimum-deletions-to-make-character-frequencies-unique/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1647-minimum-deletions-to-make-character-frequencies-unique.java)
| [✔️](javascript%2F1647-minimum-deletions-to-make-character-frequencies-unique.js)
| [✔️](kotlin%2F1647-minimum-deletions-to-make-character-frequencies-unique.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[135- - Candy](https://leetcode.com/problems/candy/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+
+### Intervals
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0057 - Insert Interval](https://leetcode.com/problems/insert-interval/) | ❌
| [✔️](c%2F0057-insert-interval.c)
| [✔️](cpp%2F0057-insert-interval.cpp)
| [✔️](csharp%2F0057-insert-interval.cs)
| ❌
| [✔️](go%2F0057-insert-interval.go)
| ❌
| [✔️](java%2F0057-insert-interval.java)
| [✔️](javascript%2F0057-insert-interval.js)
| [✔️](kotlin%2F0057-insert-interval.kt)
| [✔️](python%2F0057-insert-interval.py)
| ❌
| [✔️](rust%2F0057-insert-interval.rs)
| ❌
| [✔️](swift%2F0057-insert-interval.swift)
| [✔️](typescript%2F0057-insert-interval.ts)
+[0056 - Merge Intervals](https://leetcode.com/problems/merge-intervals/) | ❌
| [✔️](c%2F0056-merge-intervals.c)
| [✔️](cpp%2F0056-merge-intervals.cpp)
| [✔️](csharp%2F0056-merge-intervals.cs)
| ❌
| [✔️](go%2F0056-merge-intervals.go)
| ❌
| [✔️](java%2F0056-merge-intervals.java)
| [✔️](javascript%2F0056-merge-intervals.js)
| [✔️](kotlin%2F0056-merge-intervals.kt)
| [✔️](python%2F0056-merge-intervals.py)
| ❌
| [✔️](rust%2F0056-merge-intervals.rs)
| [✔️](scala%2F0056-merge-intervals.scala)
| [✔️](swift%2F0056-merge-intervals.swift)
| [✔️](typescript%2F0056-merge-intervals.ts)
+[0435 - Non Overlapping Intervals](https://leetcode.com/problems/non-overlapping-intervals/) | ❌
| [✔️](c%2F0435-non-overlapping-intervals.c)
| [✔️](cpp%2F0435-non-overlapping-intervals.cpp)
| [✔️](csharp%2F0435-non-overlapping-intervals.cs)
| ❌
| [✔️](go%2F0435-non-overlapping-intervals.go)
| ❌
| [✔️](java%2F0435-non-overlapping-intervals.java)
| [✔️](javascript%2F0435-non-overlapping-intervals.js)
| [✔️](kotlin%2F0435-non-overlapping-intervals.kt)
| [✔️](python%2F0435-non-overlapping-intervals.py)
| ❌
| [✔️](rust%2F0435-non-overlapping-intervals.rs)
| [✔️](scala%2F0435-non-overlapping-intervals.scala)
| [✔️](swift%2F0435-non-overlapping-intervals.swift)
| [✔️](typescript%2F0435-non-overlapping-intervals.ts)
+[0252 - Meeting Rooms](https://leetcode.com/problems/meeting-rooms/) | ❌
| ❌
| [✔️](cpp%2F0252-meeting-rooms.cpp)
| [✔️](csharp%2F0252-meeting-rooms.cs)
| ❌
| [✔️](go%2F0252-meeting-rooms.go)
| ❌
| [✔️](java%2F0252-meeting-rooms.java)
| [✔️](javascript%2F0252-meeting-rooms.js)
| [✔️](kotlin%2F0252-meeting-rooms.kt)
| [✔️](python%2F0252-meeting-rooms.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F0252-meeting-rooms.swift)
| ❌
+[0253 - Meeting Rooms II](https://leetcode.com/problems/meeting-rooms-ii/) | ❌
| ❌
| [✔️](cpp%2F0253-meeting-rooms-ii.cpp)
| [✔️](csharp%2F0253-meeting-rooms-ii.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0253-meeting-rooms-ii.java)
| [✔️](javascript%2F0253-meeting-rooms-ii.js)
| [✔️](kotlin%2F0253-meeting-rooms-ii.kt)
| [✔️](python%2F0253-meeting-rooms-ii.py)
| ❌
| [✔️](rust%2F0253-meeting-rooms-ii.rs)
| ❌
| [✔️](swift%2F0253-meeting-rooms-ii.swift)
| ❌
+[1288 - Remove Covered Intervals](https://leetcode.com/problems/remove-covered-intervals/) | ❌
| [✔️](c%2F1288-Remove-Covered-Intervals.c)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1288-remove-covered-intervals.kt)
| [✔️](python%2F1288-remove-covered-intervals.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1851 - Minimum Interval to Include Each Query](https://leetcode.com/problems/minimum-interval-to-include-each-query/) | ❌
| ❌
| [✔️](cpp%2F1851-Minimum-Interval-To-Include-Each-Query.cpp)
| [✔️](csharp%2F1851-Minimum-Interval-to-Include-Each-Query.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F1851-Minimum-Interval-to-Include-Each-Query.java)
| [✔️](javascript%2F1851-minimum-interval-to-include-each-query.js)
| [✔️](kotlin%2F1851-minimum-interval-to-include-each-query.kt)
| [✔️](python%2F1851-minimum-interval-to-include-each-query.py)
| ❌
| ❌
| ❌
| [✔️](swift%2F1851-minimum-interval-to-include-each-query.swift)
| ❌
+[0352 - Data Stream as Disjoint Intervals](https://leetcode.com/problems/data-stream-as-disjoint-intervals/) | ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](go%2F0352-data-stream-as-disjoint-intervals.go)
| ❌
| ❌
| [✔️](javascript%2F0352-data-stream-as-disjoint-intervals.js)
| [✔️](kotlin%2F0352-data-stream-as-disjoint-intervals.kt)
| ❌
| ❌
| [✔️](rust%2F0352-data-stream-as-disjoint-intervals.rs)
| ❌
| ❌
| [✔️](typescript%2F0352-data-stream-as-disjoint-intervals.ts)
+
+### Math & Geometry
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0168 - Excel Sheet Column Title](https://leetcode.com/problems/excel-sheet-column-title/) | ❌
| ❌
| ❌
| [✔️](csharp%2F0168-excel-sheet-column-title.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0168-excel-sheet-column-title.java)
| ❌
| [✔️](kotlin%2F0168-excel-sheet-column-title.kt)
| [✔️](python%2F0168-excel-sheet-column-title.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1071 - Greatest Common Divisor of Strings](https://leetcode.com/problems/greatest-common-divisor-of-strings/) | ❌
| ❌
| [✔️](cpp%2F1071-greatest-common-divisor-of-strings.cpp)
| ❌
| ❌
| [✔️](go%2F1071-greatest-common-divisor-of-strings.go)
| ❌
| [✔️](java%2F1071-greatest-common-divisor-of-strings.java)
| [✔️](javascript%2F1071-greatest-common-divisor-of-strings.js)
| [✔️](kotlin%2F1071-greatest-common-divisor-of-strings.kt)
| ❌
| ❌
| [✔️](rust%2F1071-greatest-common-divisor-of-strings.rs)
| ❌
| ❌
| [✔️](typescript%2F1071-greatest-common-divisor-of-strings.ts)
+[1523 - Count Odd Numbers in an Interval Range](https://leetcode.com/problems/count-odd-numbers-in-an-interval-range/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F1523-count-odd-numbers-in-an-interval-range.kt)
| [✔️](python%2F1523-count-odd-numbers-in-an-interval-range.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[1572 - Matrix Diagonal Sum](https://leetcode.com/problems/matrix-diagonal-sum/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1572-matrix-diagonal-sum.java)
| [✔️](javascript%2F1572-matrix-diagonal-sum.js)
| [✔️](kotlin%2F1572-matrix-diagonal-sum.kt)
| [✔️](python%2F1572-matrix-diagonal-sum.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0149 - Maximum Points on a Line](https://leetcode.com/problems/max-points-on-a-line/) | ❌
| ❌
| [✔️](cpp%2F0149-max-points-on-a-line.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0149-max-points-on-a-line.java)
| [✔️](javascript%2F0149-max-points-on-a-line.js)
| [✔️](kotlin%2F0149-max-points-on-a-line.kt)
| [✔️](python%2F0149-max-points-on-a-line.py)
| ❌
| [✔️](rust%2F0149-max-points-on-a-line.rs)
| ❌
| ❌
| [✔️](typescript%2F0149-max-points-on-a-line.ts)
+[0048 - Rotate Image](https://leetcode.com/problems/rotate-image/) | ❌
| [✔️](c%2F0048-rotate-image.c)
| [✔️](cpp%2F0048-rotate-image.cpp)
| [✔️](csharp%2F0048-rotate-image.cs)
| ❌
| [✔️](go%2F0048-rotate-image.go)
| ❌
| [✔️](java%2F0048-rotate-image.java)
| [✔️](javascript%2F0048-rotate-image.js)
| [✔️](kotlin%2F0048-rotate-image.kt)
| [✔️](python%2F0048-rotate-image.py)
| [✔️](ruby%2F0048-rotate-image.rb)
| [✔️](rust%2F0048-rotate-image.rs)
| ❌
| [✔️](swift%2F0048-rotate-image.swift)
| [✔️](typescript%2F0048-rotate-image.ts)
+[0054 - Spiral Matrix](https://leetcode.com/problems/spiral-matrix/) | ❌
| [✔️](c%2F0054-spiral-matrix.c)
| [✔️](cpp%2F0054-spiral-matrix.cpp)
| [✔️](csharp%2F0054-spiral-matrix.cs)
| ❌
| [✔️](go%2F0054-spiral-matrix.go)
| ❌
| [✔️](java%2F0054-spiral-matrix.java)
| [✔️](javascript%2F0054-spiral-matrix.js)
| [✔️](kotlin%2F0054-spiral-matrix.kt)
| [✔️](python%2F0054-spiral-matrix.py)
| [✔️](ruby%2F0054-spiral-matrix.rb)
| ❌
| ❌
| [✔️](swift%2F0054-spiral-matrix.swift)
| [✔️](typescript%2F0054-spiral-matrix.ts)
+[0059 - Spiral Matrix II ](https://leetcode.com/problems/spiral-matrix-ii/) | ❌
| ❌
| [✔️](cpp%2F0059-spiral-matrix-ii.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0059-spiral-matrix-ii.java)
| [✔️](javascript%2F0059-spiral-matrix-ii.js)
| [✔️](kotlin%2F0059-spiral-matrix-ii.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0073 - Set Matrix Zeroes](https://leetcode.com/problems/set-matrix-zeroes/) | ❌
| [✔️](c%2F0073-set-matrix-zeroes.c)
| [✔️](cpp%2F0073-set-matrix-zeroes.cpp)
| [✔️](csharp%2F0073-set-matrix-zeroes.cs)
| ❌
| [✔️](go%2F0073-set-matrix-zeroes.go)
| ❌
| [✔️](java%2F0073-set-matrix-zeroes.java)
| [✔️](javascript%2F0073-set-matrix-zeroes.js)
| [✔️](kotlin%2F0073-set-matrix-zeroes.kt)
| [✔️](python%2F0073-set-matrix-zeroes.py)
| [✔️](ruby%2F0073-set-matrix-zeroes.rb)
| ❌
| ❌
| [✔️](swift%2F0073-set-matrix-zeroes.swift)
| [✔️](typescript%2F0073-set-matrix-zeroes.ts)
+[0202 - Happy Number](https://leetcode.com/problems/happy-number/) | ❌
| [✔️](c%2F0202-happy-number.c)
| [✔️](cpp%2F0202-happy-number.cpp)
| [✔️](csharp%2F0202-happy-number.cs)
| ❌
| [✔️](go%2F0202-happy-number.go)
| ❌
| [✔️](java%2F0202-happy-number.java)
| [✔️](javascript%2F0202-happy-number.js)
| [✔️](kotlin%2F0202-happy-number.kt)
| [✔️](python%2F0202-happy-number.py)
| [✔️](ruby%2F0202-happy-number.rb)
| [✔️](rust%2F0202-happy-number.rs)
| ❌
| [✔️](swift%2F0202-happy-number.swift)
| [✔️](typescript%2F0202-happy-number.ts)
+[0066 - Plus One](https://leetcode.com/problems/plus-one/) | ❌
| [✔️](c%2F0066-plus-one.c)
| [✔️](cpp%2F0066-plus-one.cpp)
| [✔️](csharp%2F0066-plus-one.cs)
| ❌
| [✔️](go%2F0066-plus-one.go)
| ❌
| [✔️](java%2F0066-plus-one.java)
| [✔️](javascript%2F0066-plus-one.js)
| [✔️](kotlin%2F0066-plus-one.kt)
| [✔️](python%2F0066-plus-one.py)
| [✔️](ruby%2F0066-plus-one.rb)
| [✔️](rust%2F0066-plus-one.rs)
| ❌
| [✔️](swift%2F0066-plus-one.swift)
| [✔️](typescript%2F0066-plus-one.ts)
+[0009 - Palindrome Number](https://leetcode.com/problems/palindrome-number/) | ❌
| [✔️](c%2F0009-palindrome-number.c)
| [✔️](cpp%2F0009-palindrome-number.cpp)
| ❌
| ❌
| [✔️](go%2F0009-palindrome-number.go)
| ❌
| [✔️](java%2F0009-palindrome-number.java)
| [✔️](javascript%2F0009-palindrome-number.js)
| [✔️](kotlin%2F0009-palindrome-number.kt)
| [✔️](python%2F0009-palindrome-number.py)
| ❌
| [✔️](rust%2F0009-palindrome-number.rs)
| ❌
| [✔️](swift%2F0009-palindrome-number.swift)
| [✔️](typescript%2F0009-palindrome-number.ts)
+[0263 - Ugly Number](https://leetcode.com/problems/ugly-number/) | ❌
| [✔️](c%2F0263-ugly-number.c)
| [✔️](cpp%2F0263-ugly-number.cpp)
| ❌
| ❌
| [✔️](go%2F0263-ugly-number.go)
| ❌
| [✔️](java%2F0263-ugly-number.java)
| [✔️](javascript%2F0263-ugly-number.js)
| [✔️](kotlin%2F0263-ugly-number.kt)
| [✔️](python%2F0263-ugly-number.py)
| ❌
| [✔️](rust%2F0263-ugly-number.rs)
| ❌
| [✔️](swift%2F0263-ugly-number.swift)
| [✔️](typescript%2F0263-ugly-number.ts)
+[1260 - Shift 2D Grid](https://leetcode.com/problems/shift-2d-grid/) | ❌
| ❌
| [✔️](cpp%2F1260-shift-2d-grid.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1260-shift-2d-grid.java)
| [✔️](javascript%2F1260-shift-2d-grid.js)
| [✔️](kotlin%2F1260-shift-2d-grid.kt)
| [✔️](python%2F1260-shift-2d-grid.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[0013 - Roman to Integer](https://leetcode.com/problems/roman-to-integer/) | ❌
| [✔️](c%2F0013-roman-to-integer.c)
| [✔️](cpp%2F0013-roman-to-integer.cpp)
| ❌
| ❌
| [✔️](go%2F0013-roman-to-integer.go)
| ❌
| [✔️](java%2F0013-roman-to-integer.java)
| [✔️](javascript%2F0013-roman-to-integer.js)
| [✔️](kotlin%2F0013-roman-to-integer.kt)
| [✔️](python%2F0013-roman-to-integer.py)
| ❌
| [✔️](rust%2F0013-roman-to-integer.rs)
| ❌
| ❌
| [✔️](typescript%2F0013-roman-to-integer.ts)
+[0012 - Integer to Roman](https://leetcode.com/problems/integer-to-roman/) | ❌
| ❌
| [✔️](cpp%2F0012-integer-to-roman.cpp)
| ❌
| ❌
| [✔️](go%2F0012-integer-to-roman.go)
| ❌
| [✔️](java%2F0012-integer-to-roman.java)
| [✔️](javascript%2F0012-integer-to-roman.js)
| [✔️](kotlin%2F0012-integer-to-roman.kt)
| [✔️](python%2F0012-integer-to-roman.py)
| ❌
| [✔️](rust%2F0012-integer-to-roman.rs)
| ❌
| ❌
| [✔️](typescript%2F0012-integer-to-roman.ts)
+[0050 - Pow(x, n)](https://leetcode.com/problems/powx-n/) | ❌
| [✔️](c%2F0050-powx-n.c)
| [✔️](cpp%2F0050-powx-n.cpp)
| [✔️](csharp%2F0050-powx-n.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0050-powx-n.java)
| [✔️](javascript%2F0050-powx-n.js)
| [✔️](kotlin%2F0050-powx-n.kt)
| [✔️](python%2F0050-powx-n.py)
| [✔️](ruby%2F0050-powx-n.rb)
| [✔️](rust%2F0050-powx-n.rs)
| ❌
| [✔️](swift%2F0050-powx-n.swift)
| [✔️](typescript%2F0050-powx-n.ts)
+[0043 - Multiply Strings](https://leetcode.com/problems/multiply-strings/) | ❌
| [✔️](c%2F0043-multiply-strings.c)
| [✔️](cpp%2F0043-multiply-strings.cpp)
| [✔️](csharp%2F0043-multiply-strings.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F0043-multiply-strings.java)
| [✔️](javascript%2F0043-multiply-strings.js)
| [✔️](kotlin%2F0043-multiply-strings.kt)
| [✔️](python%2F0043-multiply-strings.py)
| [✔️](ruby%2F0043-multiply-strings.rb)
| [✔️](rust%2F0043-multiply-strings.rs)
| ❌
| [✔️](swift%2F0043-multiply-strings.swift)
| [✔️](typescript%2F0043-multiply-strings.ts)
+[2013 - Detect Squares](https://leetcode.com/problems/detect-squares/) | ❌
| ❌
| [✔️](cpp%2F2013-Detect-Squares.cpp)
| [✔️](csharp%2F2013-Detect-Squares.cs)
| ❌
| ❌
| ❌
| [✔️](java%2F2013-Detect-Squares.java)
| [✔️](javascript%2F2013-Detect-Squares.js)
| [✔️](kotlin%2F2013-detect-squares.kt)
| [✔️](python%2F2013-detect-squares.py)
| [✔️](ruby%2F2013-detect-squares.rb)
| [✔️](rust%2F2013-detect-squares.rs)
| ❌
| [✔️](swift%2F2013-detect-squares.swift)
| ❌
+[1041 - Robot Bounded In Circle](https://leetcode.com/problems/robot-bounded-in-circle/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F1041-robot-bounded-in-circle.java)
| ❌
| [✔️](kotlin%2F1041-robot-bounded-in-circle.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[0006 - Zigzag Conversion](https://leetcode.com/problems/zigzag-conversion/) | ❌
| ❌
| [✔️](cpp%2F0006-zigzag-conversion.cpp)
| ❌
| ❌
| [✔️](go%2F0006-zigzag-conversion.go)
| ❌
| [✔️](java%2F0006-zigzag-conversion.java)
| ❌
| [✔️](kotlin%2F0006-zigzag-conversion.kt)
| [✔️](python%2F0006-zigzag-conversion.py)
| ❌
| ❌
| ❌
| ❌
| ❌
+[2028 - Find Missing Observations](https://leetcode.com/problems/find-missing-observations/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](kotlin%2F2028-find-missing-observations.kt)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+
+### Bit Manipulation
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[0136 - Single Number](https://leetcode.com/problems/single-number/) | ❌
| [✔️](c%2F0136-single-number.c)
| [✔️](cpp%2F0136-single-number.cpp)
| [✔️](csharp%2F0136-single-number.cs)
| [✔️](dart%2F0136-single-number.dart)
| [✔️](go%2F0136-single-number.go)
| ❌
| [✔️](java%2F0136-single-number.java)
| [✔️](javascript%2F0136-single-number.js)
| [✔️](kotlin%2F0136-single-number.kt)
| [✔️](python%2F0136-single-number.py)
| [✔️](ruby%2F0136-single-number.rb)
| [✔️](rust%2F0136-single-number.rs)
| ❌
| [✔️](swift%2F0136-single-number.swift)
| [✔️](typescript%2F0136-single-number.ts)
+[0191 - Number of 1 Bits](https://leetcode.com/problems/number-of-1-bits/) | ❌
| [✔️](c%2F0191-number-of-1-bits.c)
| [✔️](cpp%2F0191-number-of-1-bits.cpp)
| [✔️](csharp%2F0191-number-of-1-bits.cs)
| ❌
| [✔️](go%2F0191-number-of-1-bits.go)
| ❌
| [✔️](java%2F0191-number-of-1-bits.java)
| [✔️](javascript%2F0191-number-of-1-bits.js)
| [✔️](kotlin%2F0191-number-of-1-bits.kt)
| [✔️](python%2F0191-number-of-1-bits.py)
| [✔️](ruby%2F0191-number-of-1-bits.rb)
| [✔️](rust%2F0191-number-of-1-bits.rs)
| ❌
| [✔️](swift%2F0191-number-of-1-bits.swift)
| [✔️](typescript%2F0191-number-of-1-bits.ts)
+[0338 - Counting Bits](https://leetcode.com/problems/counting-bits/) | ❌
| [✔️](c%2F0338-counting-bits.c)
| [✔️](cpp%2F0338-counting-bits.cpp)
| [✔️](csharp%2F0338-counting-bits.cs)
| ❌
| [✔️](go%2F0338-counting-bits.go)
| ❌
| [✔️](java%2F0338-counting-bits.java)
| [✔️](javascript%2F0338-counting-bits.js)
| [✔️](kotlin%2F0338-counting-bits.kt)
| [✔️](python%2F0338-counting-bits.py)
| [✔️](ruby%2F0338-counting-bits.rb)
| [✔️](rust%2F0338-counting-bits.rs)
| ❌
| [✔️](swift%2F0338-counting-bits.swift)
| [✔️](typescript%2F0338-counting-bits.ts)
+[0190 - Reverse Bits](https://leetcode.com/problems/reverse-bits/) | ❌
| [✔️](c%2F0190-reverse-bits.c)
| [✔️](cpp%2F0190-reverse-bits.cpp)
| [✔️](csharp%2F0190-reverse-bits.cs)
| ❌
| [✔️](go%2F0190-reverse-bits.go)
| ❌
| [✔️](java%2F0190-reverse-bits.java)
| [✔️](javascript%2F0190-reverse-bits.js)
| [✔️](kotlin%2F0190-reverse-bits.kt)
| [✔️](python%2F0190-reverse-bits.py)
| [✔️](ruby%2F0190-reverse-bits.rb)
| [✔️](rust%2F0190-reverse-bits.rs)
| ❌
| [✔️](swift%2F0190-reverse-bits.swift)
| [✔️](typescript%2F0190-reverse-bits.ts)
+[0268 - Missing Number](https://leetcode.com/problems/missing-number/) | ❌
| [✔️](c%2F0268-missing-number.c)
| [✔️](cpp%2F0268-missing-number.cpp)
| [✔️](csharp%2F0268-missing-number.cs)
| ❌
| [✔️](go%2F0268-missing-number.go)
| ❌
| [✔️](java%2F0268-missing-number.java)
| [✔️](javascript%2F0268-missing-number.js)
| [✔️](kotlin%2F0268-missing-number.kt)
| [✔️](python%2F0268-missing-number.py)
| [✔️](ruby%2F0268-missing-number.rb)
| [✔️](rust%2F0268-missing-number.rs)
| ❌
| [✔️](swift%2F0268-missing-number.swift)
| [✔️](typescript%2F0268-missing-number.ts)
+[1470 - Shuffle the Array](https://leetcode.com/problems/shuffle-the-array/) | ❌
| [✔️](c%2F1470-shuffle-the-array.c)
| [✔️](cpp%2F1470-shuffle-the-array.cpp)
| ❌
| ❌
| [✔️](go%2F1470-shuffle-the-array.go)
| ❌
| ❌
| [✔️](javascript%2F1470-shuffle-the-array.js)
| [✔️](kotlin%2F1470-shuffle-the-array.kt)
| ❌
| ❌
| [✔️](rust%2F1470-shuffle-the-array.rs)
| ❌
| ❌
| [✔️](typescript%2F1470-shuffle-the-array.ts)
+[0989 - Add to Array-Form of Integer](https://leetcode.com/problems/add-to-array-form-of-integer/) | ❌
| [✔️](c%2F0989-add-to-array-form-of-integer.c)
| ❌
| ❌
| ❌
| [✔️](go%2F0989-add-to-array-form-of-integer.go)
| ❌
| ❌
| [✔️](javascript%2F0989-add-to-array-form-of-integer.js)
| [✔️](kotlin%2F0989-add-to-array-form-of-integer.kt)
| ❌
| ❌
| [✔️](rust%2F0989-add-to-array-form-of-integer.rs)
| ❌
| ❌
| [✔️](typescript%2F0989-add-to-array-form-of-integer.ts)
+[0371 - Sum of Two Integers](https://leetcode.com/problems/sum-of-two-integers/) | ❌
| [✔️](c%2F0371-sum-of-two-integers.c)
| [✔️](cpp%2F0371-sum-of-two-integers.cpp)
| [✔️](csharp%2F0371-sum-of-two-integers.cs)
| ❌
| [✔️](go%2F0371-sum-of-two-integers.go)
| ❌
| [✔️](java%2F0371-sum-of-two-integers.java)
| [✔️](javascript%2F0371-sum-of-two-integers.js)
| [✔️](kotlin%2F0371-sum-of-two-integers.kt)
| [✔️](python%2F0371-sum-of-two-integers.py)
| [✔️](ruby%2F0371-sum-of-two-integers.rb)
| [✔️](rust%2F0371-sum-of-two-integers.rs)
| ❌
| [✔️](swift%2F0371-sum-of-two-integers.swift)
| [✔️](typescript%2F0371-sum-of-two-integers.ts)
+[0007 - Reverse Integer](https://leetcode.com/problems/reverse-integer/) | ❌
| [✔️](c%2F0007-reverse-integer.c)
| [✔️](cpp%2F0007-reverse-integer.cpp)
| [✔️](csharp%2F0007-reverse-integer.cs)
| ❌
| [✔️](go%2F0007-reverse-integer.go)
| ❌
| [✔️](java%2F0007-reverse-integer.java)
| [✔️](javascript%2F0007-reverse-integer.js)
| [✔️](kotlin%2F0007-reverse-integer.kt)
| [✔️](python%2F0007-reverse-integer.py)
| [✔️](ruby%2F0007-reverse-integer.rb)
| [✔️](rust%2F0007-reverse-integer.rs)
| [✔️](scala%2F0007-reverse-integer.scala)
| [✔️](swift%2F0007-reverse-integer.swift)
| [✔️](typescript%2F0007-reverse-integer.ts)
+[0067 - Add Binary](https://leetcode.com/problems/add-binary/) | ❌
| [✔️](c%2F0067-add-binary.c)
| [✔️](cpp%2F0067-Add-Binary.cpp)
| ❌
| ❌
| ❌
| ❌
| [✔️](java%2F0067-Add-Binary.java)
| [✔️](javascript%2F0067-add-binary.js)
| [✔️](kotlin%2F0067-add-binary.kt)
| [✔️](python%2F0067-add-binary.py)
| ❌
| [✔️](rust%2F0067-add-binary.rs)
| ❌
| ❌
| [✔️](typescript%2F0067-add-binary.ts)
+
+### JavaScript
+
+Problem | articles | C | C++ | C# | Dart | GO | hints | Java | JS | Kotlin | Python | Ruby | Rust | Scala | Swift | TS
+---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ----
+[2667 - Create Hello World Function](https://leetcode.com/problems/create-hello-world-function/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2667-create-hello-world-function.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F2667-create-hello-world-function.ts)
+[2620 - Counter](https://leetcode.com/problems/counter/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2620-counter.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](typescript%2F2620-counter.ts)
+[2665 - Counter II](https://leetcode.com/problems/counter-ii/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2665-counter-ii.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2635 - Apply Transform over each Element in Array](https://leetcode.com/problems/apply-transform-over-each-element-in-array/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2635-apply-transform-over-each-element-in-array.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2634 - Filter Elements from Array](https://leetcode.com/problems/filter-elements-from-array/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2634-filter-elements-from-array.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2626 - Array Reduce Transformation](https://leetcode.com/problems/array-reduce-transformation/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2626-array-reduce-transformation.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2629 - Function Composition](https://leetcode.com/problems/function-composition/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2629-function-composition.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2666 - Allow One Function Call](https://leetcode.com/problems/allow-one-function-call/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2666-allow-one-function-call.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2623 - Memoize](https://leetcode.com/problems/memoize/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2623-memoize.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2632 - Curry](https://leetcode.com/problems/curry/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2632-curry.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2621 - Sleep](https://leetcode.com/problems/sleep/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2621-sleep.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2637 - Promise Time Limit](https://leetcode.com/problems/promise-time-limit/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2636 - Promise Pool](https://leetcode.com/problems/promise-pool/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2622 - Cache With Time Limit](https://leetcode.com/problems/cache-with-time-limit/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2627 - Debounce](https://leetcode.com/problems/debounce/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2627-debounce.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2676 - Throttle](https://leetcode.com/problems/throttle/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2628 - JSON Deep Equal](https://leetcode.com/problems/json-deep-equal/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| [✔️](javascript%2F2628-json-deep-equal.js)
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2633 - Convert Object to JSON String](https://leetcode.com/problems/convert-object-to-json-string/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2675 - Array of Objects to Matrix](https://leetcode.com/problems/array-of-objects-to-matrix/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2700 - Difference Between Two Objects](https://leetcode.com/problems/differences-between-two-objects/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2677 - Chunk Array](https://leetcode.com/problems/chunk-array/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2625 - Flatten Deeply Nested Array](https://leetcode.com/problems/flatten-deeply-nested-array/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2619 - Array Prototype Last](https://leetcode.com/problems/array-prototype-last/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2631 - Group By](https://leetcode.com/problems/group-by/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2618 - Check if Object Instance of Class](https://leetcode.com/problems/check-if-object-instance-of-class/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2693 - Call Function with Custom Context](https://leetcode.com/problems/call-function-with-custom-context/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2694 - Event Emitter](https://leetcode.com/problems/event-emitter/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2695 - Array Wrapper](https://leetcode.com/problems/array-wrapper/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2648 - Generate Fibonacci Sequence](https://leetcode.com/problems/generate-fibonacci-sequence/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+[2649 - Nested Array Generator](https://leetcode.com/problems/nested-array-generator/) | ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
| ❌
+
+
+
+---
+
+Need to update the README? [Update the template instead.](README_template.md)
diff --git a/README_template.md b/README_template.md
new file mode 100644
index 000000000..177477379
--- /dev/null
+++ b/README_template.md
@@ -0,0 +1,31 @@
+# Leetcode solutions for 🚀 [NeetCode.io](https://neetcode.io)
+> This repo hosts the solutions found on [NeetCode.io](https://neetcode.io) including the solutions shown on the [NeetCode YouTube channel](https://www.youtube.com/c/neetcode). The site will periodically be updated with new solutions from this repo!
+
+
+
+Solutions from these languages will be linked from [NeetCode.io](https://neetcode.io):
+> Python, Java, JavaScript, C++, Go, Swift, C#, TypeScript, Rust, Kotlin, Ruby, C, Scala and Dart
+
+Solutions are also welcome for any other *supported* language on leetcode.com!
+
+## Contributing
+**Please read the [contributing guidlines](./CONTRIBUTING.md) before opening a PR**
+
+
+To contribute, please fork this repo and open a PR adding a [missing solution](#missing-solutions) from the supported languages.
+
+If you would like to have collaborator permissions on the repo to merge your own PRs or review others' PRs please let me know.
+
+## Credits
+
+
+
+
+
+## Missing Solutions
+
+
+
+---
+
+Need to update the README? [Update the template instead.](README_template.md)
diff --git a/articles/132-pattern.md b/articles/132-pattern.md
new file mode 100644
index 000000000..b0dc31957
--- /dev/null
+++ b/articles/132-pattern.md
@@ -0,0 +1,420 @@
+## 1. Brute Force
+
+::tabs-start
+
+```python
+class Solution:
+ def find132pattern(self, nums: List[int]) -> bool:
+ n = len(nums)
+
+ for k in range(2, n):
+ for j in range(k - 1, 0, -1):
+ if nums[j] <= nums[k]:
+ continue
+
+ for i in range(j - 1, -1, -1):
+ if nums[i] < nums[k]:
+ return True
+
+ return False
+```
+
+```java
+public class Solution {
+ public boolean find132pattern(int[] nums) {
+ int n = nums.length;
+
+ for (int k = 2; k < n; k++) {
+ for (int j = k - 1; j > 0; j--) {
+ if (nums[j] <= nums[k]) {
+ continue;
+ }
+
+ for (int i = j - 1; i >= 0; i--) {
+ if (nums[i] < nums[k]) {
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ bool find132pattern(vector& nums) {
+ int n = nums.size();
+
+ for (int k = 2; k < n; k++) {
+ for (int j = k - 1; j > 0; j--) {
+ if (nums[j] <= nums[k]) {
+ continue;
+ }
+
+ for (int i = j - 1; i >= 0; i--) {
+ if (nums[i] < nums[k]) {
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {number[]} nums
+ * @return {boolean}
+ */
+ find132pattern(nums) {
+ let n = nums.length;
+
+ for (let k = 2; k < n; k++) {
+ for (let j = k - 1; j > 0; j--) {
+ if (nums[j] <= nums[k]) {
+ continue;
+ }
+
+ for (let i = j - 1; i >= 0; i--) {
+ if (nums[i] < nums[k]) {
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(n ^ 2)$
+* Space complexity: $O(1)$
+
+---
+
+## 2. Stack
+
+::tabs-start
+
+```python
+class Solution:
+ def find132pattern(self, nums: List[int]) -> bool:
+ stack = [] # pair [num, minLeft], mono decreasing
+ curMin = nums[0]
+
+ for i in range(1, len(nums)):
+ while stack and nums[i] >= stack[-1][0]:
+ stack.pop()
+ if stack and nums[i] > stack[-1][1]:
+ return True
+
+ stack.append([nums[i], curMin])
+ curMin = min(curMin, nums[i])
+
+ return False
+```
+
+```java
+public class Solution {
+ public boolean find132pattern(int[] nums) {
+ Stack stack = new Stack<>(); // pair [num, minLeft]
+ int curMin = nums[0];
+
+ for (int i = 1; i < nums.length; i++) {
+ while (!stack.isEmpty() && nums[i] >= stack.peek()[0]) {
+ stack.pop();
+ }
+ if (!stack.isEmpty() && nums[i] > stack.peek()[1]) {
+ return true;
+ }
+
+ stack.push(new int[]{nums[i], curMin});
+ curMin = Math.min(curMin, nums[i]);
+ }
+
+ return false;
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ bool find132pattern(vector& nums) {
+ stack> stack; // pair
+ int curMin = nums[0];
+
+ for (int i = 1; i < nums.size(); i++) {
+ while (!stack.empty() && nums[i] >= stack.top().first) {
+ stack.pop();
+ }
+ if (!stack.empty() && nums[i] > stack.top().second) {
+ return true;
+ }
+
+ stack.push({nums[i], curMin});
+ curMin = min(curMin, nums[i]);
+ }
+
+ return false;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {number[]} nums
+ * @return {boolean}
+ */
+ find132pattern(nums) {
+ const stack = []; // pair [num, minLeft]
+ let curMin = nums[0];
+
+ for (let i = 1; i < nums.length; i++) {
+ while (stack.length > 0 && nums[i] >= stack[stack.length - 1][0]) {
+ stack.pop();
+ }
+ if (stack.length > 0 && nums[i] > stack[stack.length - 1][1]) {
+ return true;
+ }
+
+ stack.push([nums[i], curMin]);
+ curMin = Math.min(curMin, nums[i]);
+ }
+
+ return false;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(n)$
+* Space complexity: $O(n)$
+
+---
+
+## 3. Stack (Optimal)
+
+::tabs-start
+
+```python
+class Solution:
+ def find132pattern(self, nums: List[int]) -> bool:
+ stack, k = [], float('-inf')
+
+ for i in range(len(nums) - 1, -1, -1):
+ if nums[i] < k:
+ return True
+
+ while stack and stack[-1] < nums[i]:
+ k = stack.pop()
+ stack.append(nums[i])
+
+ return False
+```
+
+```java
+public class Solution {
+ public boolean find132pattern(int[] nums) {
+ Stack stack = new Stack<>();
+ int k = Integer.MIN_VALUE;
+
+ for (int i = nums.length - 1; i >= 0; i--) {
+ if (nums[i] < k) {
+ return true;
+ }
+
+ while (!stack.isEmpty() && stack.peek() < nums[i]) {
+ k = stack.pop();
+ }
+ stack.push(nums[i]);
+ }
+
+ return false;
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ bool find132pattern(vector& nums) {
+ stack stack;
+ int k = INT_MIN;
+
+ for (int i = nums.size() - 1; i >= 0; i--) {
+ if (nums[i] < k) {
+ return true;
+ }
+
+ while (!stack.empty() && stack.top() < nums[i]) {
+ k = stack.top();
+ stack.pop();
+ }
+ stack.push(nums[i]);
+ }
+
+ return false;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {number[]} nums
+ * @return {boolean}
+ */
+ find132pattern(nums) {
+ const stack = [];
+ let k = -Infinity;
+
+ for (let i = nums.length - 1; i >= 0; i--) {
+ if (nums[i] < k) {
+ return true;
+ }
+
+ while (stack.length > 0 && stack[stack.length - 1] < nums[i]) {
+ k = stack.pop();
+ }
+ stack.push(nums[i]);
+ }
+
+ return false;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(n)$
+* Space complexity: $O(n)$
+
+---
+
+## 4. Two Pointers
+
+::tabs-start
+
+```python
+class Solution:
+ def find132pattern(self, nums: List[int]) -> bool:
+ n = len(nums)
+ stkTop, k = n, float('-inf')
+
+ for i in range(n - 1, -1, -1):
+ if nums[i] < k:
+ return True
+
+ while stkTop < n and nums[i] > nums[stkTop]:
+ k = nums[stkTop]
+ stkTop += 1
+
+ stkTop -= 1
+ nums[stkTop] = nums[i]
+
+ return False
+```
+
+```java
+public class Solution {
+ public boolean find132pattern(int[] nums) {
+ int n = nums.length;
+ int stkTop = n;
+ int k = Integer.MIN_VALUE;
+
+ for (int i = n - 1; i >= 0; i--) {
+ if (nums[i] < k) {
+ return true;
+ }
+
+ while (stkTop < n && nums[i] > nums[stkTop]) {
+ k = nums[stkTop++];
+ }
+
+ nums[--stkTop] = nums[i];
+ }
+
+ return false;
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ bool find132pattern(vector& nums) {
+ int n = nums.size();
+ int stkTop = n;
+ int k = INT_MIN;
+
+ for (int i = n - 1; i >= 0; i--) {
+ if (nums[i] < k) {
+ return true;
+ }
+
+ while (stkTop < n && nums[i] > nums[stkTop]) {
+ k = nums[stkTop++];
+ }
+
+ nums[--stkTop] = nums[i];
+ }
+
+ return false;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {number[]} nums
+ * @return {boolean}
+ */
+ find132pattern(nums) {
+ const n = nums.length;
+ let stkTop = n;
+ let k = -Infinity;
+
+ for (let i = n - 1; i >= 0; i--) {
+ if (nums[i] < k) {
+ return true;
+ }
+
+ while (stkTop < n && nums[i] > nums[stkTop]) {
+ k = nums[stkTop++];
+ }
+
+ nums[--stkTop] = nums[i];
+ }
+
+ return false;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(n)$
+* Space complexity: $O(1)$ extra space.
\ No newline at end of file
diff --git a/articles/4sum.md b/articles/4sum.md
new file mode 100644
index 000000000..b590cf39e
--- /dev/null
+++ b/articles/4sum.md
@@ -0,0 +1,810 @@
+## 1. Brute Force
+
+::tabs-start
+
+```python
+class Solution:
+ def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
+ n = len(nums)
+ nums.sort()
+ res = set()
+
+ for a in range(n):
+ for b in range(a + 1, n):
+ for c in range(b + 1, n):
+ for d in range(c + 1, n):
+ if nums[a] + nums[b] + nums[c] + nums[d] == target:
+ res.add((nums[a], nums[b], nums[c], nums[d]))
+ return list(res)
+```
+
+```java
+public class Solution {
+ public List> fourSum(int[] nums, int target) {
+ int n = nums.length;
+ Arrays.sort(nums);
+ Set> res = new HashSet<>();
+
+ for (int a = 0; a < n; a++) {
+ for (int b = a + 1; b < n; b++) {
+ for (int c = b + 1; c < n; c++) {
+ for (int d = c + 1; d < n; d++) {
+ if (nums[a] + nums[b] + 0L + nums[c] + nums[d] == target) {
+ res.add(Arrays.asList(nums[a], nums[b], nums[c], nums[d]));
+ }
+ }
+ }
+ }
+ }
+
+ return new ArrayList<>(res);
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ vector> fourSum(vector& nums, int target) {
+ int n = nums.size();
+ sort(nums.begin(), nums.end());
+ set> res;
+
+ for (int a = 0; a < n; a++) {
+ for (int b = a + 1; b < n; b++) {
+ for (int c = b + 1; c < n; c++) {
+ for (int d = c + 1; d < n; d++) {
+ if (nums[a] + nums[b] + 0LL + nums[c] + nums[d] == target) {
+ res.insert({nums[a], nums[b], nums[c], nums[d]});
+ }
+ }
+ }
+ }
+ }
+
+ return vector>(res.begin(), res.end());
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {number[]} nums
+ * @param {number} target
+ * @return {number[][]}
+ */
+ fourSum(nums, target) {
+ let n = nums.length;
+ nums.sort((a, b) => a - b);
+ let res = new Set();
+
+ for (let a = 0; a < n; a++) {
+ for (let b = a + 1; b < n; b++) {
+ for (let c = b + 1; c < n; c++) {
+ for (let d = c + 1; d < n; d++) {
+ if (nums[a] + nums[b] + nums[c] + nums[d] === target) {
+ res.add(JSON.stringify([nums[a], nums[b], nums[c], nums[d]]));
+ }
+ }
+ }
+ }
+ }
+
+ return Array.from(res).map(JSON.parse);
+ }
+}
+```
+
+```csharp
+public class Solution {
+ public List> FourSum(int[] nums, int target) {
+ int n = nums.Length;
+ Array.Sort(nums);
+ HashSet<(int, int, int, int)> res = new HashSet<(int, int, int, int)>();
+
+ for (int a = 0; a < n; a++) {
+ for (int b = a + 1; b < n; b++) {
+ for (int c = b + 1; c < n; c++) {
+ for (int d = c + 1; d < n; d++) {
+ long sum = (long)nums[a] + nums[b] + nums[c] + nums[d];
+ if (sum == target) {
+ res.Add((nums[a], nums[b], nums[c], nums[d]));
+ }
+ }
+ }
+ }
+ }
+
+ var result = new List>();
+ foreach (var quad in res) {
+ result.Add(new List { quad.Item1, quad.Item2, quad.Item3, quad.Item4 });
+ }
+ return result;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(n ^ 4)$
+* Space complexity: $O(m)$
+
+> Where $n$ is the size of the array $nums$ and $m$ is the number of quadruplets.
+
+---
+
+## 2. Hash Map
+
+::tabs-start
+
+```python
+class Solution:
+ def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
+ nums.sort()
+ count = defaultdict(int)
+ for num in nums:
+ count[num] += 1
+
+ res = []
+ for i in range(len(nums)):
+ count[nums[i]] -= 1
+ if i > 0 and nums[i] == nums[i - 1]:
+ continue
+
+ for j in range(i + 1, len(nums)):
+ count[nums[j]] -= 1
+ if j > i + 1 and nums[j] == nums[j - 1]:
+ continue
+
+ for k in range(j + 1, len(nums)):
+ count[nums[k]] -= 1
+ if k > j + 1 and nums[k] == nums[k - 1]:
+ continue
+
+ fourth = target - (nums[i] + nums[j] + nums[k])
+ if count[fourth] > 0:
+ res.append([nums[i], nums[j], nums[k], fourth])
+
+ for k in range(j + 1, len(nums)):
+ count[nums[k]] += 1
+
+ for j in range(i + 1, len(nums)):
+ count[nums[j]] += 1
+
+ return res
+```
+
+```java
+public class Solution {
+ public List> fourSum(int[] nums, int target) {
+ Arrays.sort(nums);
+ Map count = new HashMap<>();
+ for (int num : nums) {
+ count.put(num, count.getOrDefault(num, 0) + 1);
+ }
+ List> res = new ArrayList<>();
+
+ for (int i = 0; i < nums.length; i++) {
+ count.put(nums[i], count.get(nums[i]) - 1);
+ if (i > 0 && nums[i] == nums[i - 1]) continue;
+
+ for (int j = i + 1; j < nums.length; j++) {
+ count.put(nums[j], count.get(nums[j]) - 1);
+ if (j > i + 1 && nums[j] == nums[j - 1]) continue;
+
+ for (int k = j + 1; k < nums.length; k++) {
+ count.put(nums[k], count.get(nums[k]) - 1);
+ if (k > j + 1 && nums[k] == nums[k - 1]) continue;
+
+ long fourth = target - (nums[i] + nums[j] + 0L + nums[k]);
+ if (fourth > Integer.MAX_VALUE || fourth < Integer.MIN_VALUE) {
+ continue;
+ }
+ if (count.getOrDefault((int) fourth, 0) > 0) {
+ res.add(Arrays.asList(nums[i], nums[j], nums[k], (int) fourth));
+ }
+ }
+
+ for (int k = j + 1; k < nums.length; k++) {
+ count.put(nums[k], count.get(nums[k]) + 1);
+ }
+ }
+
+ for (int j = i + 1; j < nums.length; j++) {
+ count.put(nums[j], count.get(nums[j]) + 1);
+ }
+ }
+
+ return res;
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ vector> fourSum(vector& nums, int target) {
+ sort(nums.begin(), nums.end());
+ unordered_map count;
+ for (int num : nums) {
+ count[num]++;
+ }
+ vector> res;
+
+ for (int i = 0; i < nums.size(); i++) {
+ count[nums[i]]--;
+ if (i > 0 && nums[i] == nums[i - 1]) continue;
+
+ for (int j = i + 1; j < nums.size(); j++) {
+ count[nums[j]]--;
+ if (j > i + 1 && nums[j] == nums[j - 1]) continue;
+
+ for (int k = j + 1; k < nums.size(); k++) {
+ count[nums[k]]--;
+ if (k > j + 1 && nums[k] == nums[k - 1]) continue;
+
+ long long fourth = target - (nums[i] + nums[j] + 0LL + nums[k]);
+ if (fourth < INT_MIN || fourth > INT_MAX) continue;
+ if (count[fourth] > 0) {
+ res.push_back({nums[i], nums[j], nums[k], int(fourth)});
+ }
+ }
+
+ for (int k = j + 1; k < nums.size(); k++) {
+ count[nums[k]]++;
+ }
+ }
+
+ for (int j = i + 1; j < nums.size(); j++) {
+ count[nums[j]]++;
+ }
+ }
+
+ return res;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {number[]} nums
+ * @param {number} target
+ * @return {number[][]}
+ */
+ fourSum(nums, target) {
+ nums.sort((a, b) => a - b);
+ const count = new Map();
+ for (const num of nums) {
+ count.set(num, (count.get(num) || 0) + 1);
+ }
+ const res = [];
+
+ for (let i = 0; i < nums.length; i++) {
+ count.set(nums[i], count.get(nums[i]) - 1);
+ if (i > 0 && nums[i] === nums[i - 1]) continue;
+
+ for (let j = i + 1; j < nums.length; j++) {
+ count.set(nums[j], count.get(nums[j]) - 1);
+ if (j > i + 1 && nums[j] === nums[j - 1]) continue;
+
+ for (let k = j + 1; k < nums.length; k++) {
+ count.set(nums[k], count.get(nums[k]) - 1);
+ if (k > j + 1 && nums[k] === nums[k - 1]) continue;
+
+ const fourth = target - (nums[i] + nums[j] + nums[k]);
+ if ((count.get(fourth) || 0) > 0) {
+ res.push([nums[i], nums[j], nums[k], fourth]);
+ }
+ }
+
+ for (let k = j + 1; k < nums.length; k++) {
+ count.set(nums[k], count.get(nums[k]) + 1);
+ }
+ }
+
+ for (let j = i + 1; j < nums.length; j++) {
+ count.set(nums[j], count.get(nums[j]) + 1);
+ }
+ }
+
+ return res;
+ }
+}
+```
+
+```csharp
+public class Solution {
+ public List> FourSum(int[] nums, int target) {
+ Array.Sort(nums);
+ Dictionary count = new Dictionary();
+
+ foreach (int num in nums) {
+ if (!count.ContainsKey(num)) {
+ count[num] = 0;
+ }
+ count[num]++;
+ }
+
+ List> res = new List>();
+
+ for (int i = 0; i < nums.Length; i++) {
+ count[nums[i]]--;
+ if (i > 0 && nums[i] == nums[i - 1]) continue;
+
+ for (int j = i + 1; j < nums.Length; j++) {
+ count[nums[j]]--;
+ if (j > i + 1 && nums[j] == nums[j - 1]) continue;
+
+ for (int k = j + 1; k < nums.Length; k++) {
+ count[nums[k]]--;
+ if (k > j + 1 && nums[k] == nums[k - 1]) continue;
+
+ long fourth = (long)target - (long)nums[i] - (long)nums[j] - (long)nums[k];
+ if (fourth > int.MaxValue || fourth < int.MinValue) {
+ continue;
+ }
+
+ if (count.ContainsKey((int)fourth) && count[(int)fourth] > 0) {
+ res.Add(new List { nums[i], nums[j], nums[k], (int)fourth });
+ }
+ }
+
+ for (int k = j + 1; k < nums.Length; k++) {
+ count[nums[k]]++;
+ }
+ }
+
+ for (int j = i + 1; j < nums.Length; j++) {
+ count[nums[j]]++;
+ }
+ }
+
+ return res;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(n ^ 3)$
+* Space complexity:
+ * $O(n)$ space for the hash map.
+ * $O(m)$ space for the output array.
+
+> Where $n$ is the size of the array $nums$ and $m$ is the number of quadruplets.
+
+---
+
+## 3. Two Pointers
+
+::tabs-start
+
+```python
+class Solution:
+ def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
+ nums.sort()
+ n = len(nums)
+ res = []
+
+ for i in range(n):
+ if i > 0 and nums[i] == nums[i - 1]:
+ continue
+ for j in range(i + 1, n):
+ if j > i + 1 and nums[j] == nums[j - 1]:
+ continue
+ left, right = j + 1, n - 1
+ while left < right:
+ total = nums[i] + nums[j] + nums[left] + nums[right]
+ if total == target:
+ res.append([nums[i], nums[j], nums[left], nums[right]])
+ left += 1
+ right -= 1
+ while left < right and nums[left] == nums[left - 1]:
+ left += 1
+ while left < right and nums[right] == nums[right + 1]:
+ right -= 1
+ elif total < target:
+ left += 1
+ else:
+ right -= 1
+
+ return res
+```
+
+```java
+public class Solution {
+ public List> fourSum(int[] nums, int target) {
+ Arrays.sort(nums);
+ List> res = new ArrayList<>();
+ int n = nums.length;
+
+ for (int i = 0; i < n; i++) {
+ if (i > 0 && nums[i] == nums[i - 1]) continue;
+
+ for (int j = i + 1; j < n; j++) {
+ if (j > i + 1 && nums[j] == nums[j - 1]) continue;
+
+ int left = j + 1, right = n - 1;
+ while (left < right) {
+ long sum = (long) nums[i] + nums[j] + nums[left] + nums[right];
+ if (sum == target) {
+ res.add(Arrays.asList(nums[i], nums[j], nums[left], nums[right]));
+ left++;
+ right--;
+ while (left < right && nums[left] == nums[left - 1]) left++;
+ while (left < right && nums[right] == nums[right + 1]) right--;
+ } else if (sum < target) {
+ left++;
+ } else {
+ right--;
+ }
+ }
+ }
+ }
+ return res;
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ vector> fourSum(vector& nums, int target) {
+ vector> res;
+ int n = nums.size();
+ sort(nums.begin(), nums.end());
+
+ for (int i = 0; i < n; i++) {
+ if (i > 0 && nums[i] == nums[i - 1]) continue;
+
+ for (int j = i + 1; j < n; j++) {
+ if (j > i + 1 && nums[j] == nums[j - 1]) continue;
+
+ int left = j + 1, right = n - 1;
+ while (left < right) {
+ long long sum = (long long) nums[i] + nums[j] + nums[left] + nums[right];
+ if (sum == target) {
+ res.push_back({nums[i], nums[j], nums[left], nums[right]});
+ left++;
+ right--;
+ while (left < right && nums[left] == nums[left - 1]) left++;
+ while (left < right && nums[right] == nums[right + 1]) right--;
+ } else if (sum < target) {
+ left++;
+ } else {
+ right--;
+ }
+ }
+ }
+ }
+ return res;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {number[]} nums
+ * @param {number} target
+ * @return {number[][]}
+ */
+ fourSum(nums, target) {
+ nums.sort((a, b) => a - b);
+ const res = [];
+ const n = nums.length;
+
+ for (let i = 0; i < n; i++) {
+ if (i > 0 && nums[i] === nums[i - 1]) continue;
+
+ for (let j = i + 1; j < n; j++) {
+ if (j > i + 1 && nums[j] === nums[j - 1]) continue;
+
+ let left = j + 1, right = n - 1;
+ while (left < right) {
+ const sum = nums[i] + nums[j] + nums[left] + nums[right];
+ if (sum === target) {
+ res.push([nums[i], nums[j], nums[left], nums[right]]);
+ left++;
+ right--;
+ while (left < right && nums[left] === nums[left - 1]) left++;
+ while (left < right && nums[right] === nums[right + 1]) right--;
+ } else if (sum < target) {
+ left++;
+ } else {
+ right--;
+ }
+ }
+ }
+ }
+
+ return res;
+ }
+}
+```
+
+```csharp
+public class Solution {
+ public List> FourSum(int[] nums, int target) {
+ Array.Sort(nums);
+ List> res = new List>();
+ int n = nums.Length;
+
+ for (int i = 0; i < n; i++) {
+ if (i > 0 && nums[i] == nums[i - 1]) continue;
+
+ for (int j = i + 1; j < n; j++) {
+ if (j > i + 1 && nums[j] == nums[j - 1]) continue;
+
+ int left = j + 1, right = n - 1;
+ while (left < right) {
+ long sum = (long)nums[i] + nums[j] + nums[left] + nums[right];
+ if (sum == target) {
+ res.Add(new List { nums[i], nums[j], nums[left], nums[right] });
+ left++;
+ right--;
+ while (left < right && nums[left] == nums[left - 1]) left++;
+ while (left < right && nums[right] == nums[right + 1]) right--;
+ } else if (sum < target) {
+ left++;
+ } else {
+ right--;
+ }
+ }
+ }
+ }
+
+ return res;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(n ^ 3)$
+* Space complexity:
+ * $O(1)$ or $O(n)$ space depending on the sorting algorithm.
+ * $O(m)$ space for the output array.
+
+---
+
+## 4. K-Sum + Two Pointers
+
+::tabs-start
+
+```python
+class Solution:
+ def fourSum(self, nums: List[int], target: int) -> List[List[int]]:
+ nums.sort()
+ res, quad = [], []
+
+ def kSum(k, start, target):
+ if k == 2:
+ l, r = start, len(nums) - 1
+ while l < r:
+ if nums[l] + nums[r] < target:
+ l += 1
+ elif nums[l] + nums[r] > target:
+ r -= 1
+ else:
+ res.append(quad + [nums[l], nums[r]])
+ l += 1
+ r -= 1
+ while l < r and nums[l] == nums[l - 1]:
+ l += 1
+ while l < r and nums[r] == nums[r + 1]:
+ r -= 1
+ return
+
+ for i in range(start, len(nums) - k + 1):
+ if i > start and nums[i] == nums[i - 1]:
+ continue
+ quad.append(nums[i])
+ kSum(k - 1, i + 1, target - nums[i])
+ quad.pop()
+
+ kSum(4, 0, target)
+ return res
+```
+
+```java
+public class Solution {
+ private List> res;
+ private List quad;
+
+ public List> fourSum(int[] nums, int target) {
+ Arrays.sort(nums);
+ res = new ArrayList<>();
+ quad = new ArrayList<>();
+ kSum(nums, 4, 0, target);
+ return res;
+ }
+
+ private void kSum(int[] nums, int k, int start, long target) {
+ if (k == 2) {
+ int l = start, r = nums.length - 1;
+ while (l < r) {
+ long sum = nums[l] + nums[r];
+ if (sum < target) {
+ l++;
+ } else if (sum > target) {
+ r--;
+ } else {
+ res.add(new ArrayList<>(quad));
+ res.get(res.size() - 1).add(nums[l]);
+ res.get(res.size() - 1).add(nums[r]);
+ l++;
+ r--;
+ while (l < r && nums[l] == nums[l - 1]) l++;
+ while (l < r && nums[r] == nums[r + 1]) r--;
+ }
+ }
+ return;
+ }
+
+ for (int i = start; i < nums.length - k + 1; i++) {
+ if (i > start && nums[i] == nums[i - 1]) continue;
+ quad.add(nums[i]);
+ kSum(nums, k - 1, i + 1, target - nums[i]);
+ quad.remove(quad.size() - 1);
+ }
+ }
+}
+```
+
+```cpp
+class Solution {
+ vector> res;
+ vector quad;
+
+public:
+ vector> fourSum(vector& nums, int target) {
+ if (nums.size() < 4) return {};
+ sort(nums.begin(), nums.end());
+ kSum(nums, 4, 0, (long long) target);
+ return res;
+ }
+
+private:
+ void kSum(vector& nums, int k, int start, long long target) {
+ if (k == 2) {
+ int l = start, r = nums.size() - 1;
+ while (l < r) {
+ long long sum = (long long) nums[l] + nums[r];
+ if (sum < target) {
+ l++;
+ } else if (sum > target) {
+ r--;
+ } else {
+ quad.push_back(nums[l]);
+ quad.push_back(nums[r]);
+ res.push_back(quad);
+ quad.pop_back();
+ quad.pop_back();
+ l++;
+ r--;
+ while (l < r && nums[l] == nums[l - 1]) l++;
+ while (l < r && nums[r] == nums[r + 1]) r--;
+ }
+ }
+ return;
+ }
+
+ for (int i = start; i < nums.size() - k + 1; i++) {
+ if (i > start && nums[i] == nums[i - 1]) continue;
+ quad.push_back(nums[i]);
+ kSum(nums, k - 1, i + 1, target - nums[i]);
+ quad.pop_back();
+ }
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {number[]} nums
+ * @param {number} target
+ * @return {number[][]}
+ */
+ fourSum(nums, target) {
+ nums.sort((a, b) => a - b);
+ const res = [];
+ const quad = [];
+
+ const kSum = (k, start, target) => {
+ if (k === 2) {
+ let l = start, r = nums.length - 1;
+ while (l < r) {
+ const sum = nums[l] + nums[r];
+ if (sum < target) {
+ l++;
+ } else if (sum > target) {
+ r--;
+ } else {
+ res.push([...quad, nums[l], nums[r]]);
+ l++;
+ r--;
+ while (l < r && nums[l] === nums[l - 1]) l++;
+ while (l < r && nums[r] === nums[r + 1]) r--;
+ }
+ }
+ return;
+ }
+
+ for (let i = start; i < nums.length - k + 1; i++) {
+ if (i > start && nums[i] === nums[i - 1]) continue;
+ quad.push(nums[i]);
+ kSum(k - 1, i + 1, target - nums[i]);
+ quad.pop();
+ }
+ };
+
+ kSum(4, 0, target);
+ return res;
+ }
+}
+```
+
+```csharp
+public class Solution {
+ private List> res;
+ private List quad;
+
+ public List> FourSum(int[] nums, int target) {
+ Array.Sort(nums);
+ res = new List>();
+ quad = new List();
+ KSum(nums, 4, 0, target);
+ return res;
+ }
+
+ private void KSum(int[] nums, int k, int start, long target) {
+ if (k == 2) {
+ int l = start, r = nums.Length - 1;
+ while (l < r) {
+ long sum = (long)nums[l] + nums[r];
+ if (sum < target) {
+ l++;
+ } else if (sum > target) {
+ r--;
+ } else {
+ List newQuad = new List(quad);
+ newQuad.Add(nums[l]);
+ newQuad.Add(nums[r]);
+ res.Add(newQuad);
+ l++;
+ r--;
+ while (l < r && nums[l] == nums[l - 1]) l++;
+ while (l < r && nums[r] == nums[r + 1]) r--;
+ }
+ }
+ return;
+ }
+
+ for (int i = start; i < nums.Length - k + 1; i++) {
+ if (i > start && nums[i] == nums[i - 1]) continue;
+ quad.Add(nums[i]);
+ KSum(nums, k - 1, i + 1, target - nums[i]);
+ quad.RemoveAt(quad.Count - 1);
+ }
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(n ^ 3)$
+* Space complexity:
+ * $O(1)$ or $O(n)$ space depending on the sorting algorithm.
+ * $O(m)$ space for the output array.
\ No newline at end of file
diff --git a/articles/README.md b/articles/README.md
new file mode 100644
index 000000000..79d65db56
--- /dev/null
+++ b/articles/README.md
@@ -0,0 +1,6 @@
+# Article Guide
+
+1. Each article should be written in markdown. Exanple: [duplicate-integer.md](https://github.com/neetcode-gh/leetcode/blob/main/articles/duplicate-integer.md)
+2. At least one solution should be similar to a solution present in the NeetCode video. Ideally all solutions from the video are present.
+3. Add time & space complexity
+4. Cover all relevant solutions if possible.
diff --git a/articles/accounts-merge.md b/articles/accounts-merge.md
new file mode 100644
index 000000000..15b8e9881
--- /dev/null
+++ b/articles/accounts-merge.md
@@ -0,0 +1,1165 @@
+## 1. Depth First Search
+
+::tabs-start
+
+```python
+class Solution:
+ def accountsMerge(self, accounts: List[List[str]]) -> List[List[str]]:
+ n = len(accounts)
+ emailIdx = {} # email -> id
+ emails = [] # set of emails of all accounts
+ emailToAcc = {} # email_index -> account_Id
+
+ m = 0
+ for accId, a in enumerate(accounts):
+ for i in range(1, len(a)):
+ email = a[i]
+ if email in emailIdx:
+ continue
+ emails.append(email)
+ emailIdx[email] = m
+ emailToAcc[m] = accId
+ m += 1
+
+ adj = [[] for _ in range(m)]
+ for a in accounts:
+ for i in range(2, len(a)):
+ id1 = emailIdx[a[i]]
+ id2 = emailIdx[a[i - 1]]
+ adj[id1].append(id2)
+ adj[id2].append(id1)
+
+ emailGroup = defaultdict(list) # index of acc -> list of emails
+ visited = [False] * m
+ def dfs(node, accId):
+ visited[node] = True
+ emailGroup[accId].append(emails[node])
+ for nei in adj[node]:
+ if not visited[nei]:
+ dfs(nei, accId)
+
+ for i in range(m):
+ if not visited[i]:
+ dfs(i, emailToAcc[i])
+
+ res = []
+ for accId in emailGroup:
+ name = accounts[accId][0]
+ res.append([name] + sorted(emailGroup[accId]))
+
+ return res
+```
+
+```java
+public class Solution {
+ private Map emailIdx = new HashMap<>(); // email -> id
+ private List emails = new ArrayList<>(); // set of emails of all accounts
+ private Map emailToAcc = new HashMap<>(); // email_index -> account_Id
+ private List> adj;
+ private Map> emailGroup = new HashMap<>(); // index of acc -> list of emails
+ private boolean[] visited;
+
+ public List> accountsMerge(List> accounts) {
+ int n = accounts.size();
+ int m = 0;
+
+ // Build email index and mappings
+ for (int accId = 0; accId < n; accId++) {
+ List account = accounts.get(accId);
+ for (int i = 1; i < account.size(); i++) {
+ String email = account.get(i);
+ if (!emailIdx.containsKey(email)) {
+ emails.add(email);
+ emailIdx.put(email, m);
+ emailToAcc.put(m, accId);
+ m++;
+ }
+ }
+ }
+
+ // Build adjacency list
+ adj = new ArrayList<>();
+ for (int i = 0; i < m; i++) {
+ adj.add(new ArrayList<>());
+ }
+ for (List account : accounts) {
+ for (int i = 2; i < account.size(); i++) {
+ int id1 = emailIdx.get(account.get(i));
+ int id2 = emailIdx.get(account.get(i - 1));
+ adj.get(id1).add(id2);
+ adj.get(id2).add(id1);
+ }
+ }
+
+ // Initialize visited array
+ visited = new boolean[m];
+
+ // DFS traversal
+ for (int i = 0; i < m; i++) {
+ if (!visited[i]) {
+ int accId = emailToAcc.get(i);
+ emailGroup.putIfAbsent(accId, new ArrayList<>());
+ dfs(i, accId);
+ }
+ }
+
+ // Build result
+ List> res = new ArrayList<>();
+ for (int accId : emailGroup.keySet()) {
+ List group = emailGroup.get(accId);
+ Collections.sort(group);
+ List merged = new ArrayList<>();
+ merged.add(accounts.get(accId).get(0));
+ merged.addAll(group);
+ res.add(merged);
+ }
+
+ return res;
+ }
+
+ private void dfs(int node, int accId) {
+ visited[node] = true;
+ emailGroup.get(accId).add(emails.get(node));
+ for (int neighbor : adj.get(node)) {
+ if (!visited[neighbor]) {
+ dfs(neighbor, accId);
+ }
+ }
+ }
+}
+```
+
+```cpp
+class Solution {
+ unordered_map emailIdx; // email -> id
+ vector emails; // set of emails of all accounts
+ unordered_map emailToAcc; // email_index -> account_Id
+ vector> adj;
+ unordered_map> emailGroup; // index of acc -> list of emails
+ vector visited;
+
+public:
+ vector> accountsMerge(vector>& accounts) {
+ int n = accounts.size();
+ int m = 0;
+
+ // Build email index and mappings
+ for (int accId = 0; accId < n; accId++) {
+ vector& account = accounts[accId];
+ for (int i = 1; i < account.size(); i++) {
+ string& email = account[i];
+ if (emailIdx.find(email) == emailIdx.end()) {
+ emails.push_back(email);
+ emailIdx[email] = m;
+ emailToAcc[m] = accId;
+ m++;
+ }
+ }
+ }
+
+ // Build adjacency list
+ adj.resize(m);
+ for (auto& account : accounts) {
+ for (int i = 2; i < account.size(); i++) {
+ int id1 = emailIdx[account[i]];
+ int id2 = emailIdx[account[i - 1]];
+ adj[id1].push_back(id2);
+ adj[id2].push_back(id1);
+ }
+ }
+
+ visited.resize(m, false);
+ // DFS traversal
+ for (int i = 0; i < m; i++) {
+ if (!visited[i]) {
+ int accId = emailToAcc[i];
+ dfs(i, accId);
+ }
+ }
+
+ // Build result
+ vector> res;
+ for (auto& [accId, group] : emailGroup) {
+ sort(group.begin(), group.end());
+ vector merged;
+ merged.push_back(accounts[accId][0]);
+ merged.insert(merged.end(), group.begin(), group.end());
+ res.push_back(merged);
+ }
+
+ return res;
+ }
+
+private:
+ void dfs(int node, int& accId) {
+ visited[node] = true;
+ emailGroup[accId].push_back(emails[node]);
+ for (int& neighbor : adj[node]) {
+ if (!visited[neighbor]) {
+ dfs(neighbor, accId);
+ }
+ }
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {string[][]} accounts
+ * @return {string[][]}
+ */
+ accountsMerge(accounts) {
+ const emailIdx = new Map(); // email -> id
+ const emails = []; // set of emails of all accounts
+ const emailToAcc = new Map(); // email_index -> account_Id
+ const adj = [];
+ const emailGroup = new Map(); // index of acc -> list of emails
+ let visited = [];
+
+ const n = accounts.length;
+ let m = 0;
+
+ // Build email index and mappings
+ for (let accId = 0; accId < n; accId++) {
+ const account = accounts[accId];
+ for (let i = 1; i < account.length; i++) {
+ const email = account[i];
+ if (!emailIdx.has(email)) {
+ emails.push(email);
+ emailIdx.set(email, m);
+ emailToAcc.set(m, accId);
+ m++;
+ }
+ }
+ }
+
+ // Build adjacency list
+ for (let i = 0; i < m; i++) {
+ adj.push([]);
+ }
+ for (const account of accounts) {
+ for (let i = 2; i < account.length; i++) {
+ const id1 = emailIdx.get(account[i]);
+ const id2 = emailIdx.get(account[i - 1]);
+ adj[id1].push(id2);
+ adj[id2].push(id1);
+ }
+ }
+
+ // Initialize visited array
+ visited = Array(m).fill(false);
+
+ // DFS traversal
+ const dfs = (node, accId) => {
+ visited[node] = true;
+ emailGroup.get(accId).push(emails[node]);
+ for (const neighbor of adj[node]) {
+ if (!visited[neighbor]) {
+ dfs(neighbor, accId);
+ }
+ }
+ };
+
+ for (let i = 0; i < m; i++) {
+ if (!visited[i]) {
+ const accId = emailToAcc.get(i);
+ if (!emailGroup.has(accId)) {
+ emailGroup.set(accId, []);
+ }
+ dfs(i, accId);
+ }
+ }
+
+ // Build result
+ const res = [];
+ for (const [accId, group] of emailGroup.entries()) {
+ group.sort();
+ const merged = [accounts[accId][0], ...group];
+ res.push(merged);
+ }
+
+ return res;
+ }
+}
+```
+
+```csharp
+public class Solution {
+ private Dictionary emailIdx = new Dictionary();
+ private List emails = new List();
+ private List> adj;
+ private bool[] visited;
+ private Dictionary> components = new Dictionary>();
+ private Dictionary componentName = new Dictionary();
+
+ public List> AccountsMerge(List> accounts) {
+ int m = 0;
+
+ for (int accId = 0; accId < accounts.Count; accId++) {
+ var account = accounts[accId];
+ for (int i = 1; i < account.Count; i++) {
+ string email = account[i];
+ if (!emailIdx.ContainsKey(email)) {
+ emailIdx[email] = m++;
+ emails.Add(email);
+ }
+ }
+ }
+
+ adj = new List>();
+ for (int i = 0; i < m; i++) adj.Add(new List());
+
+ foreach (var account in accounts) {
+ for (int i = 2; i < account.Count; i++) {
+ int u = emailIdx[account[i - 1]];
+ int v = emailIdx[account[i]];
+ adj[u].Add(v);
+ adj[v].Add(u);
+ }
+ }
+
+ visited = new bool[m];
+
+ foreach (var account in accounts) {
+ string name = account[0];
+ foreach (var email in account.Skip(1)) {
+ int idx = emailIdx[email];
+ if (!visited[idx]) {
+ components[idx] = new List();
+ componentName[idx] = name;
+ Dfs(idx, idx);
+ }
+ }
+ }
+
+ var res = new List>();
+ foreach (var kvp in components) {
+ var group = kvp.Value;
+ group.Sort(StringComparer.Ordinal);
+ var merged = new List { componentName[kvp.Key] };
+ merged.AddRange(group);
+ res.Add(merged);
+ }
+
+ return res;
+ }
+
+ private void Dfs(int node, int root) {
+ visited[node] = true;
+ components[root].Add(emails[node]);
+ foreach (int nei in adj[node]) {
+ if (!visited[nei]) {
+ Dfs(nei, root);
+ }
+ }
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O((n * m)\log (n * m))$
+* Space complexity: $O(n * m)$
+
+> Where $n$ is the number of accounts and $m$ is the number of emails.
+
+---
+
+## 2. Breadth First Search
+
+::tabs-start
+
+```python
+class Solution:
+ def accountsMerge(self, accounts: List[List[str]]) -> List[List[str]]:
+ n = len(accounts)
+ emailIdx = {} # email -> id
+ emails = [] # set of emails of all accounts
+ emailToAcc = {} # email_index -> account_Id
+
+ m = 0
+ for accId, a in enumerate(accounts):
+ for i in range(1, len(a)):
+ email = a[i]
+ if email in emailIdx:
+ continue
+ emails.append(email)
+ emailIdx[email] = m
+ emailToAcc[m] = accId
+ m += 1
+
+ adj = [[] for _ in range(m)]
+ for a in accounts:
+ for i in range(2, len(a)):
+ id1 = emailIdx[a[i]]
+ id2 = emailIdx[a[i - 1]]
+ adj[id1].append(id2)
+ adj[id2].append(id1)
+
+ emailGroup = defaultdict(list) # index of acc -> list of emails
+ visited = [False] * m
+
+ def bfs(start, accId):
+ queue = deque([start])
+ visited[start] = True
+ while queue:
+ node = queue.popleft()
+ emailGroup[accId].append(emails[node])
+ for nei in adj[node]:
+ if not visited[nei]:
+ visited[nei] = True
+ queue.append(nei)
+
+ for i in range(m):
+ if not visited[i]:
+ bfs(i, emailToAcc[i])
+
+ res = []
+ for accId in emailGroup:
+ name = accounts[accId][0]
+ res.append([name] + sorted(emailGroup[accId]))
+
+ return res
+```
+
+```java
+public class Solution {
+ private Map emailIdx = new HashMap<>(); // email -> id
+ private List emails = new ArrayList<>(); // set of emails of all accounts
+ private Map emailToAcc = new HashMap<>(); // email_index -> account_Id
+ private List> adj;
+ private Map> emailGroup = new HashMap<>(); // index of acc -> list of emails
+ private boolean[] visited;
+
+ public List> accountsMerge(List> accounts) {
+ int n = accounts.size();
+ int m = 0;
+
+ // Build email index and mappings
+ for (int accId = 0; accId < n; accId++) {
+ List account = accounts.get(accId);
+ for (int i = 1; i < account.size(); i++) {
+ String email = account.get(i);
+ if (!emailIdx.containsKey(email)) {
+ emails.add(email);
+ emailIdx.put(email, m);
+ emailToAcc.put(m, accId);
+ m++;
+ }
+ }
+ }
+
+ // Build adjacency list
+ adj = new ArrayList<>();
+ for (int i = 0; i < m; i++) {
+ adj.add(new ArrayList<>());
+ }
+ for (List account : accounts) {
+ for (int i = 2; i < account.size(); i++) {
+ int id1 = emailIdx.get(account.get(i));
+ int id2 = emailIdx.get(account.get(i - 1));
+ adj.get(id1).add(id2);
+ adj.get(id2).add(id1);
+ }
+ }
+
+ // Initialize visited array
+ visited = new boolean[m];
+
+ // BFS traversal
+ for (int i = 0; i < m; i++) {
+ if (!visited[i]) {
+ int accId = emailToAcc.get(i);
+ emailGroup.putIfAbsent(accId, new ArrayList<>());
+ bfs(i, accId);
+ }
+ }
+
+ // Build result
+ List> res = new ArrayList<>();
+ for (int accId : emailGroup.keySet()) {
+ List group = emailGroup.get(accId);
+ Collections.sort(group);
+ List merged = new ArrayList<>();
+ merged.add(accounts.get(accId).get(0));
+ merged.addAll(group);
+ res.add(merged);
+ }
+
+ return res;
+ }
+
+ private void bfs(int start, int accId) {
+ Queue queue = new LinkedList<>();
+ queue.offer(start);
+ visited[start] = true;
+
+ while (!queue.isEmpty()) {
+ int node = queue.poll();
+ emailGroup.get(accId).add(emails.get(node));
+ for (int neighbor : adj.get(node)) {
+ if (!visited[neighbor]) {
+ visited[neighbor] = true;
+ queue.offer(neighbor);
+ }
+ }
+ }
+ }
+}
+```
+
+```cpp
+class Solution {
+ unordered_map emailIdx; // email -> id
+ vector emails; // set of emails of all accounts
+ unordered_map emailToAcc; // email_index -> account_Id
+ vector> adj;
+ unordered_map> emailGroup; // index of acc -> list of emails
+ vector visited;
+
+public:
+ vector> accountsMerge(vector>& accounts) {
+ int n = accounts.size();
+ int m = 0;
+
+ // Build email index and mappings
+ for (int accId = 0; accId < n; accId++) {
+ vector& account = accounts[accId];
+ for (int i = 1; i < account.size(); i++) {
+ string& email = account[i];
+ if (emailIdx.find(email) == emailIdx.end()) {
+ emails.push_back(email);
+ emailIdx[email] = m;
+ emailToAcc[m] = accId;
+ m++;
+ }
+ }
+ }
+
+ // Build adjacency list
+ adj.resize(m);
+ for (auto& account : accounts) {
+ for (int i = 2; i < account.size(); i++) {
+ int id1 = emailIdx[account[i]];
+ int id2 = emailIdx[account[i - 1]];
+ adj[id1].push_back(id2);
+ adj[id2].push_back(id1);
+ }
+ }
+
+ visited.resize(m, false);
+ // BFS traversal
+ for (int i = 0; i < m; i++) {
+ if (!visited[i]) {
+ int accId = emailToAcc[i];
+ bfs(i, accId);
+ }
+ }
+
+ // Build result
+ vector> res;
+ for (auto& [accId, group] : emailGroup) {
+ sort(group.begin(), group.end());
+ vector merged;
+ merged.push_back(accounts[accId][0]);
+ merged.insert(merged.end(), group.begin(), group.end());
+ res.push_back(merged);
+ }
+
+ return res;
+ }
+
+private:
+ void bfs(int start, int accId) {
+ queue q;
+ q.push(start);
+ visited[start] = true;
+
+ while (!q.empty()) {
+ int node = q.front();
+ q.pop();
+ emailGroup[accId].push_back(emails[node]);
+ for (int& neighbor : adj[node]) {
+ if (!visited[neighbor]) {
+ visited[neighbor] = true;
+ q.push(neighbor);
+ }
+ }
+ }
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {string[][]} accounts
+ * @return {string[][]}
+ */
+ accountsMerge(accounts) {
+ const emailIdx = new Map(); // email -> id
+ const emails = []; // set of emails of all accounts
+ const emailToAcc = new Map(); // email_index -> account_Id
+ const adj = [];
+ const emailGroup = new Map(); // index of acc -> list of emails
+ let visited = [];
+
+ const n = accounts.length;
+ let m = 0;
+
+ // Build email index and mappings
+ for (let accId = 0; accId < n; accId++) {
+ const account = accounts[accId];
+ for (let i = 1; i < account.length; i++) {
+ const email = account[i];
+ if (!emailIdx.has(email)) {
+ emails.push(email);
+ emailIdx.set(email, m);
+ emailToAcc.set(m, accId);
+ m++;
+ }
+ }
+ }
+
+ // Build adjacency list
+ for (let i = 0; i < m; i++) {
+ adj.push([]);
+ }
+ for (const account of accounts) {
+ for (let i = 2; i < account.length; i++) {
+ const id1 = emailIdx.get(account[i]);
+ const id2 = emailIdx.get(account[i - 1]);
+ adj[id1].push(id2);
+ adj[id2].push(id1);
+ }
+ }
+
+ // Initialize visited array
+ visited = Array(m).fill(false);
+
+ // BFS traversal
+ const bfs = (start, accId) => {
+ const queue = new Queue([start]);
+ visited[start] = true;
+
+ while (!queue.isEmpty()) {
+ const node = queue.pop();
+ emailGroup.get(accId).push(emails[node]);
+ for (const neighbor of adj[node]) {
+ if (!visited[neighbor]) {
+ visited[neighbor] = true;
+ queue.push(neighbor);
+ }
+ }
+ }
+ };
+
+ for (let i = 0; i < m; i++) {
+ if (!visited[i]) {
+ const accId = emailToAcc.get(i);
+ if (!emailGroup.has(accId)) {
+ emailGroup.set(accId, []);
+ }
+ bfs(i, accId);
+ }
+ }
+
+ // Build result
+ const res = [];
+ for (const [accId, group] of emailGroup.entries()) {
+ group.sort();
+ const merged = [accounts[accId][0], ...group];
+ res.push(merged);
+ }
+
+ return res;
+ }
+}
+```
+
+```csharp
+public class Solution {
+ public List> AccountsMerge(List> accounts) {
+ int n = accounts.Count;
+ Dictionary emailIdx = new Dictionary();
+ List emails = new List();
+ Dictionary emailToAcc = new Dictionary();
+
+ int m = 0;
+ for (int accId = 0; accId < n; accId++) {
+ var account = accounts[accId];
+ for (int i = 1; i < account.Count; i++) {
+ string email = account[i];
+ if (!emailIdx.ContainsKey(email)) {
+ emailIdx[email] = m;
+ emails.Add(email);
+ emailToAcc[m] = accId;
+ m++;
+ }
+ }
+ }
+
+ List> adj = new List>();
+ for (int i = 0; i < m; i++) adj.Add(new List());
+
+ foreach (var account in accounts) {
+ for (int i = 2; i < account.Count; i++) {
+ int id1 = emailIdx[account[i]];
+ int id2 = emailIdx[account[i - 1]];
+ adj[id1].Add(id2);
+ adj[id2].Add(id1);
+ }
+ }
+
+ Dictionary> emailGroup = new Dictionary>();
+ bool[] visited = new bool[m];
+
+ void Bfs(int start, int accId) {
+ Queue queue = new Queue();
+ queue.Enqueue(start);
+ visited[start] = true;
+
+ if (!emailGroup.ContainsKey(accId))
+ emailGroup[accId] = new List();
+
+ while (queue.Count > 0) {
+ int node = queue.Dequeue();
+ emailGroup[accId].Add(emails[node]);
+
+ foreach (int nei in adj[node]) {
+ if (!visited[nei]) {
+ visited[nei] = true;
+ queue.Enqueue(nei);
+ }
+ }
+ }
+ }
+
+ for (int i = 0; i < m; i++) {
+ if (!visited[i]) {
+ Bfs(i, emailToAcc[i]);
+ }
+ }
+
+ List> res = new List>();
+ foreach (var kvp in emailGroup) {
+ int accId = kvp.Key;
+ string name = accounts[accId][0];
+ List merged = new List { name };
+ kvp.Value.Sort(StringComparer.Ordinal);
+ merged.AddRange(kvp.Value);
+ res.Add(merged);
+ }
+
+ return res;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O((n * m)\log (n * m))$
+* Space complexity: $O(n * m)$
+
+> Where $n$ is the number of accounts and $m$ is the number of emails.
+
+---
+
+## 3. Disjoint Set Union
+
+::tabs-start
+
+```python
+class UnionFind:
+ def __init__(self, n):
+ self.par = [i for i in range(n)]
+ self.rank = [1] * n
+
+ def find(self, x):
+ while x != self.par[x]:
+ self.par[x] = self.par[self.par[x]]
+ x = self.par[x]
+ return x
+
+ def union(self, x1, x2):
+ p1, p2 = self.find(x1), self.find(x2)
+ if p1 == p2:
+ return False
+ if self.rank[p1] > self.rank[p2]:
+ self.par[p2] = p1
+ self.rank[p1] += self.rank[p2]
+ else:
+ self.par[p1] = p2
+ self.rank[p2] += self.rank[p1]
+ return True
+
+class Solution:
+ def accountsMerge(self, accounts: List[List[str]]) -> List[List[str]]:
+ uf = UnionFind(len(accounts))
+ emailToAcc = {} # email -> index of acc
+
+ for i, a in enumerate(accounts):
+ for e in a[1:]:
+ if e in emailToAcc:
+ uf.union(i, emailToAcc[e])
+ else:
+ emailToAcc[e] = i
+
+ emailGroup = defaultdict(list) # index of acc -> list of emails
+ for e, i in emailToAcc.items():
+ leader = uf.find(i)
+ emailGroup[leader].append(e)
+
+ res = []
+ for i, emails in emailGroup.items():
+ name = accounts[i][0]
+ res.append([name] + sorted(emailGroup[i]))
+ return res
+```
+
+```java
+class UnionFind {
+ private int[] parent;
+ private int[] rank;
+
+ public UnionFind(int n) {
+ parent = new int[n];
+ rank = new int[n];
+ for (int i = 0; i < n; i++) {
+ parent[i] = i;
+ rank[i] = 1;
+ }
+ }
+
+ public int find(int x) {
+ if (x != parent[x]) {
+ parent[x] = find(parent[x]);
+ }
+ return parent[x];
+ }
+
+ public boolean union(int x1, int x2) {
+ int p1 = find(x1);
+ int p2 = find(x2);
+ if (p1 == p2) {
+ return false;
+ }
+ if (rank[p1] > rank[p2]) {
+ parent[p2] = p1;
+ rank[p1] += rank[p2];
+ } else {
+ parent[p1] = p2;
+ rank[p2] += rank[p1];
+ }
+ return true;
+ }
+}
+
+public class Solution {
+ public List> accountsMerge(List> accounts) {
+ int n = accounts.size();
+ UnionFind uf = new UnionFind(n);
+ Map emailToAcc = new HashMap<>(); // email -> index of acc
+
+ // Build union-find structure
+ for (int i = 0; i < n; i++) {
+ List account = accounts.get(i);
+ for (int j = 1; j < account.size(); j++) {
+ String email = account.get(j);
+ if (emailToAcc.containsKey(email)) {
+ uf.union(i, emailToAcc.get(email));
+ } else {
+ emailToAcc.put(email, i);
+ }
+ }
+ }
+
+ // Group emails by leader account
+ Map> emailGroup = new HashMap<>(); // index of acc -> list of emails
+ for (Map.Entry entry : emailToAcc.entrySet()) {
+ String email = entry.getKey();
+ int accId = entry.getValue();
+ int leader = uf.find(accId);
+ emailGroup.putIfAbsent(leader, new ArrayList<>());
+ emailGroup.get(leader).add(email);
+ }
+
+ // Build result
+ List> res = new ArrayList<>();
+ for (Map.Entry> entry : emailGroup.entrySet()) {
+ int accId = entry.getKey();
+ List emails = entry.getValue();
+ Collections.sort(emails);
+ List merged = new ArrayList<>();
+ merged.add(accounts.get(accId).get(0)); // Add account name
+ merged.addAll(emails);
+ res.add(merged);
+ }
+
+ return res;
+ }
+}
+```
+
+```cpp
+class UnionFind {
+ vector parent;
+ vector rank;
+
+public:
+ UnionFind(int n) {
+ parent.resize(n);
+ rank.resize(n, 1);
+ for (int i = 0; i < n; i++) {
+ parent[i] = i;
+ }
+ }
+
+ int find(int x) {
+ if (x != parent[x]) {
+ parent[x] = find(parent[x]);
+ }
+ return parent[x];
+ }
+
+ bool unionSets(int x1, int x2) {
+ int p1 = find(x1);
+ int p2 = find(x2);
+ if (p1 == p2) {
+ return false;
+ }
+ if (rank[p1] > rank[p2]) {
+ parent[p2] = p1;
+ rank[p1] += rank[p2];
+ } else {
+ parent[p1] = p2;
+ rank[p2] += rank[p1];
+ }
+ return true;
+ }
+};
+
+class Solution {
+public:
+ vector> accountsMerge(vector>& accounts) {
+ int n = accounts.size();
+ UnionFind uf(n);
+ unordered_map emailToAcc; // email -> index of acc
+
+ // Build union-find structure
+ for (int i = 0; i < n; i++) {
+ for (int j = 1; j < accounts[i].size(); j++) {
+ const string& email = accounts[i][j];
+ if (emailToAcc.count(email)) {
+ uf.unionSets(i, emailToAcc[email]);
+ } else {
+ emailToAcc[email] = i;
+ }
+ }
+ }
+
+ // Group emails by leader account
+ map> emailGroup; // index of acc -> list of emails
+ for (const auto& [email, accId] : emailToAcc) {
+ int leader = uf.find(accId);
+ emailGroup[leader].push_back(email);
+ }
+
+ // Build result
+ vector> res;
+ for (auto& [accId, emails] : emailGroup) {
+ sort(emails.begin(), emails.end());
+ vector merged;
+ merged.push_back(accounts[accId][0]);
+ merged.insert(merged.end(), emails.begin(), emails.end());
+ res.push_back(merged);
+ }
+
+ return res;
+ }
+};
+```
+
+```javascript
+class UnionFind {
+ /**
+ * @constructor
+ * @param {number} n
+ */
+ constructor(n) {
+ this.parent = Array.from({ length: n }, (_, i) => i);
+ this.rank = Array(n).fill(1);
+ }
+
+ /**
+ * @param {number} x
+ * @return {number}
+ */
+ find(x) {
+ if (x !== this.parent[x]) {
+ this.parent[x] = this.find(this.parent[x]);
+ }
+ return this.parent[x];
+ }
+
+ /**
+ * @param {number} x1
+ * @param {number} x2
+ * @return {boolean}
+ */
+ union(x1, x2) {
+ const p1 = this.find(x1);
+ const p2 = this.find(x2);
+ if (p1 === p2) {
+ return false;
+ }
+ if (this.rank[p1] > this.rank[p2]) {
+ this.parent[p2] = p1;
+ this.rank[p1] += this.rank[p2];
+ } else {
+ this.parent[p1] = p2;
+ this.rank[p2] += this.rank[p1];
+ }
+ return true;
+ }
+}
+
+class Solution {
+ /**
+ * @param {string[][]} accounts
+ * @return {string[][]}
+ */
+ accountsMerge(accounts) {
+ const n = accounts.length;
+ const uf = new UnionFind(n);
+ const emailToAcc = new Map(); // email -> index of acc
+
+ // Build union-find structure
+ for (let i = 0; i < n; i++) {
+ for (let j = 1; j < accounts[i].length; j++) {
+ const email = accounts[i][j];
+ if (emailToAcc.has(email)) {
+ uf.union(i, emailToAcc.get(email));
+ } else {
+ emailToAcc.set(email, i);
+ }
+ }
+ }
+
+ // Group emails by leader account
+ const emailGroup = new Map(); // index of acc -> list of emails
+ for (const [email, accId] of emailToAcc.entries()) {
+ const leader = uf.find(accId);
+ if (!emailGroup.has(leader)) {
+ emailGroup.set(leader, []);
+ }
+ emailGroup.get(leader).push(email);
+ }
+
+ // Build result
+ const res = [];
+ for (const [accId, emails] of emailGroup.entries()) {
+ emails.sort();
+ const merged = [accounts[accId][0], ...emails];
+ res.push(merged);
+ }
+
+ return res;
+ }
+}
+```
+
+```csharp
+public class UnionFind {
+ private int[] parent;
+ private int[] rank;
+
+ public UnionFind(int n) {
+ parent = new int[n];
+ rank = new int[n];
+ for (int i = 0; i < n; i++) {
+ parent[i] = i;
+ rank[i] = 1;
+ }
+ }
+
+ public int Find(int x) {
+ if (x != parent[x]) {
+ parent[x] = Find(parent[x]);
+ }
+ return parent[x];
+ }
+
+ public bool Union(int x, int y) {
+ int rootX = Find(x);
+ int rootY = Find(y);
+
+ if (rootX == rootY) return false;
+
+ if (rank[rootX] > rank[rootY]) {
+ parent[rootY] = rootX;
+ rank[rootX] += rank[rootY];
+ } else {
+ parent[rootX] = rootY;
+ rank[rootY] += rank[rootX];
+ }
+
+ return true;
+ }
+}
+
+public class Solution {
+ public List> AccountsMerge(List> accounts) {
+ int n = accounts.Count;
+ UnionFind uf = new UnionFind(n);
+ Dictionary emailToAcc = new Dictionary();
+
+ for (int i = 0; i < n; i++) {
+ for (int j = 1; j < accounts[i].Count; j++) {
+ string email = accounts[i][j];
+ if (emailToAcc.ContainsKey(email)) {
+ uf.Union(i, emailToAcc[email]);
+ } else {
+ emailToAcc[email] = i;
+ }
+ }
+ }
+
+ Dictionary> emailGroup = new Dictionary>();
+ foreach (var kvp in emailToAcc) {
+ string email = kvp.Key;
+ int leader = uf.Find(kvp.Value);
+ if (!emailGroup.ContainsKey(leader)) {
+ emailGroup[leader] = new List();
+ }
+ emailGroup[leader].Add(email);
+ }
+
+ List> res = new List>();
+ foreach (var kvp in emailGroup) {
+ int accId = kvp.Key;
+ List emails = kvp.Value;
+ emails.Sort(StringComparer.Ordinal);
+ List merged = new List { accounts[accId][0] };
+ merged.AddRange(emails);
+ res.Add(merged);
+ }
+
+ return res;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O((n * m)\log (n * m))$
+* Space complexity: $O(n * m)$
+
+> Where $n$ is the number of accounts and $m$ is the number of emails.
\ No newline at end of file
diff --git a/articles/add-binary.md b/articles/add-binary.md
new file mode 100644
index 000000000..424adb990
--- /dev/null
+++ b/articles/add-binary.md
@@ -0,0 +1,240 @@
+## 1. Iteration
+
+::tabs-start
+
+```python
+class Solution:
+ def addBinary(self, a: str, b: str) -> str:
+ res = ""
+ carry = 0
+
+ a, b = a[::-1], b[::-1]
+ for i in range(max(len(a), len(b))):
+ digitA = ord(a[i]) - ord("0") if i < len(a) else 0
+ digitB = ord(b[i]) - ord("0") if i < len(b) else 0
+
+ total = digitA + digitB + carry
+ char = str(total % 2)
+ res = char + res
+ carry = total // 2
+
+ if carry:
+ res = "1" + res
+
+ return res
+```
+
+```java
+public class Solution {
+ public String addBinary(String a, String b) {
+ StringBuilder res = new StringBuilder();
+ int carry = 0;
+
+ StringBuilder sa = new StringBuilder(a).reverse();
+ StringBuilder sb = new StringBuilder(b).reverse();
+
+ for (int i = 0; i < Math.max(sa.length(), sb.length()); i++) {
+ int digitA = i < sa.length() ? sa.charAt(i) - '0' : 0;
+ int digitB = i < sb.length() ? sb.charAt(i) - '0' : 0;
+
+ int total = digitA + digitB + carry;
+ char c = (char)((total % 2) + '0');
+ res.append(c);
+ carry = total / 2;
+ }
+
+ if (carry > 0) {
+ res.append('1');
+ }
+
+ return res.reverse().toString();
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ string addBinary(string a, string b) {
+ string res = "";
+ int carry = 0;
+
+ reverse(a.begin(), a.end());
+ reverse(b.begin(), b.end());
+
+ for (int i = 0; i < max(a.length(), b.length()); i++) {
+ int digitA = i < a.length() ? a[i] - '0' : 0;
+ int digitB = i < b.length() ? b[i] - '0' : 0;
+
+ int total = digitA + digitB + carry;
+ char c = (total % 2) + '0';
+ res += c;
+ carry = total / 2;
+ }
+
+ if (carry) {
+ res += '1';
+ }
+ reverse(res.begin(), res.end());
+ return res;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {string} a
+ * @param {string} b
+ * @return {string}
+ */
+ addBinary(a, b) {
+ let res = [];
+ let carry = 0;
+
+ a = a.split("").reverse().join("");
+ b = b.split("").reverse().join("");
+
+ for (let i = 0; i < Math.max(a.length, b.length); i++) {
+ const digitA = i < a.length ? a[i] - '0' : 0;
+ const digitB = i < b.length ? b[i] - '0' : 0;
+
+ const total = digitA + digitB + carry;
+ const char = (total % 2).toString();
+ res.push(char)
+ carry = Math.floor(total / 2);
+ }
+
+ if (carry) {
+ res.push('1');
+ }
+ res.reverse()
+ return res.join('');
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(max(m, n))$
+* Space complexity: $O(m + n)$
+
+> Where $m$ and $n$ are the lengths of the strings $a$ and $b$ respectively.
+
+---
+
+## 2. Iteration (Optimal)
+
+::tabs-start
+
+```python
+class Solution:
+ def addBinary(self, a: str, b: str) -> str:
+ res = []
+ carry = 0
+
+ i, j = len(a) - 1, len(b) - 1
+ while i >= 0 or j >= 0 or carry > 0:
+ digitA = int(a[i]) if i >= 0 else 0
+ digitB = int(b[j]) if j >= 0 else 0
+
+ total = digitA + digitB + carry
+ res.append(total % 2)
+ carry = total // 2
+
+ i -= 1
+ j -= 1
+
+ res.reverse()
+ return ''.join(map(str, res))
+```
+
+```java
+public class Solution {
+ public String addBinary(String a, String b) {
+ StringBuilder res = new StringBuilder();
+ int carry = 0;
+
+ int i = a.length() - 1, j = b.length() - 1;
+ while (i >= 0 || j >= 0 || carry > 0) {
+ int digitA = i >= 0 ? a.charAt(i) - '0' : 0;
+ int digitB = j >= 0 ? b.charAt(j) - '0' : 0;
+
+ int total = digitA + digitB + carry;
+ res.append(total % 2);
+ carry = total / 2;
+
+ i--;
+ j--;
+ }
+
+ return res.reverse().toString();
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ string addBinary(string a, string b) {
+ string res = "";
+ int carry = 0;
+
+ int i = a.size() - 1, j = b.size() - 1;
+ while (i >= 0 || j >= 0 || carry > 0) {
+ int digitA = i >= 0 ? a[i] - '0' : 0;
+ int digitB = j >= 0 ? b[j] - '0' : 0;
+
+ int total = digitA + digitB + carry;
+ res += (total % 2) + '0';
+ carry = total / 2;
+
+ i--;
+ j--;
+ }
+
+ reverse(res.begin(), res.end());
+ return res;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {string} a
+ * @param {string} b
+ * @return {string}
+ */
+ addBinary(a, b) {
+ let res = [];
+ let carry = 0;
+
+ let i = a.length - 1, j = b.length - 1;
+ while (i >= 0 || j >= 0 || carry > 0) {
+ const digitA = i >= 0 ? a[i] - "0" : 0;
+ const digitB = j >= 0 ? b[j] - "0" : 0;
+
+ const total = digitA + digitB + carry;
+ res.push(total % 2);
+ carry = Math.floor(total / 2);
+
+ i--;
+ j--;
+ }
+ res.reverse()
+ return res.join('');
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(max(m, n))$
+* Space complexity: $O(max(m, n))$
+
+> Where $m$ and $n$ are the lengths of the strings $a$ and $b$ respectively.
\ No newline at end of file
diff --git a/articles/add-to-array-form-of-integer.md b/articles/add-to-array-form-of-integer.md
new file mode 100644
index 000000000..ecab6ca84
--- /dev/null
+++ b/articles/add-to-array-form-of-integer.md
@@ -0,0 +1,217 @@
+## 1. Reverse and Add
+
+::tabs-start
+
+```python
+class Solution:
+ def addToArrayForm(self, num: List[int], k: int) -> List[int]:
+ num.reverse()
+ i = 0
+ while k:
+ digit = k % 10
+ if i < len(num):
+ num[i] += digit
+ else:
+ num.append(digit)
+ carry = num[i] // 10
+ num[i] %= 10
+ k //= 10
+ k += carry
+ i += 1
+ num.reverse()
+ return num
+```
+
+```java
+public class Solution {
+ public List addToArrayForm(int[] num, int k) {
+ List result = new ArrayList<>();
+ for (int i = num.length - 1; i >= 0; i--) {
+ k += num[i];
+ result.add(k % 10);
+ k /= 10;
+ }
+ while (k > 0) {
+ result.add(k % 10);
+ k /= 10;
+ }
+ Collections.reverse(result);
+ return result;
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ vector addToArrayForm(vector& num, int k) {
+ reverse(num.begin(), num.end());
+ int i = 0;
+ while (k) {
+ int digit = k % 10;
+ if (i < num.size()) {
+ num[i] += digit;
+ } else {
+ num.push_back(digit);
+ }
+ int carry = num[i] / 10;
+ num[i] %= 10;
+ k /= 10;
+ k += carry;
+ i++;
+ }
+ reverse(num.begin(), num.end());
+ return num;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {number[]} num
+ * @param {number} k
+ * @return {number[]}
+ */
+ addToArrayForm(num, k) {
+ num.reverse();
+ let i = 0;
+ while (k > 0) {
+ const digit = k % 10;
+ if (i < num.length) {
+ num[i] += digit;
+ } else {
+ num.push(digit);
+ }
+ const carry = Math.floor(num[i] / 10);
+ num[i] %= 10;
+ k = Math.floor(k / 10) + carry;
+ i++;
+ }
+ num.reverse();
+ return num;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(max(n, m))$
+* Space complexity: $O(n)$.
+
+> Where $n$ is the size of the array $num$ and $m$ is the number of digits in $k$.
+
+---
+
+## 2. Without Reverse()
+
+::tabs-start
+
+```python
+class Solution:
+ def addToArrayForm(self, num: List[int], k: int) -> List[int]:
+ from collections import deque
+ result = deque()
+ i = len(num) - 1
+ carry = 0
+
+ while i >= 0 or k > 0 or carry > 0:
+ digit = k % 10
+ sum_val = carry + (num[i] if i >= 0 else 0) + digit
+
+ result.appendleft(sum_val % 10)
+ carry = sum_val // 10
+
+ k //= 10
+ i -= 1
+
+ return list(result)
+```
+
+```java
+public class Solution {
+ public List addToArrayForm(int[] num, int k) {
+ LinkedList result = new LinkedList<>();
+ int carry = 0, i = num.length - 1;
+
+ while (i >= 0 || k > 0 || carry > 0) {
+ int digit = k % 10;
+ int sum = carry + (i >= 0 ? num[i] : 0) + digit;
+
+ result.addFirst(sum % 10);
+ carry = sum / 10;
+
+ k /= 10;
+ i--;
+ }
+
+ return result;
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ vector addToArrayForm(vector& num, int k) {
+ list result;
+ int carry = 0, i = num.size() - 1;
+
+ while (i >= 0 || k > 0 || carry > 0) {
+ int digit = k % 10;
+ int sum = carry + (i >= 0 ? num[i] : 0) + digit;
+
+ result.push_front(sum % 10);
+ carry = sum / 10;
+
+ k /= 10;
+ i--;
+ }
+
+ return vector(result.begin(), result.end());
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {number[]} num
+ * @param {number} k
+ * @return {number[]}
+ */
+ addToArrayForm(num, k) {
+ let res = new Deque();
+ let carry = 0, i = num.length - 1;
+
+ while (i >= 0 || k > 0 || carry > 0) {
+ const digit = k % 10;
+ const sum = carry + (i >= 0 ? num[i] : 0) + digit;
+
+ res.pushFront(sum % 10);
+ carry = Math.floor(sum / 10);
+
+ k = Math.floor(k / 10);
+ i--;
+ }
+
+ const resultArray = [];
+ while (!res.isEmpty()) {
+ resultArray.push(res.popFront());
+ }
+
+ return resultArray;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(max(n, m))$
+* Space complexity: $O(n)$
+
+> Where $n$ is the size of the array $num$ and $m$ is the number of digits in $k$.
\ No newline at end of file
diff --git a/articles/add-two-numbers.md b/articles/add-two-numbers.md
new file mode 100644
index 000000000..118adab49
--- /dev/null
+++ b/articles/add-two-numbers.md
@@ -0,0 +1,659 @@
+## 1. Recursion
+
+::tabs-start
+
+```python
+# Definition for singly-linked list.
+# class ListNode:
+# def __init__(self, val=0, next=None):
+# self.val = val
+# self.next = next
+
+class Solution:
+ def add(self, l1: Optional[ListNode], l2: Optional[ListNode], carry: int) -> Optional[ListNode]:
+ if not l1 and not l2 and carry == 0:
+ return None
+
+ v1 = l1.val if l1 else 0
+ v2 = l2.val if l2 else 0
+
+ carry, val = divmod(v1 + v2 + carry, 10)
+
+ next_node = self.add(
+ l1.next if l1 else None,
+ l2.next if l2 else None,
+ carry
+ )
+ return ListNode(val, next_node)
+
+ def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
+ return self.add(l1, l2, 0)
+```
+
+```java
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * int val;
+ * ListNode next;
+ * ListNode() {}
+ * ListNode(int val) { this.val = val; }
+ * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
+ * }
+ */
+
+public class Solution {
+ public ListNode add(ListNode l1, ListNode l2, int carry) {
+ if (l1 == null && l2 == null && carry == 0) {
+ return null;
+ }
+
+ int v1 = 0;
+ int v2 = 0;
+ if (l1 != null) {
+ v1 = l1.val;
+ }
+ if (l2 != null) {
+ v2 = l2.val;
+ }
+
+ int sum = v1 + v2 + carry;
+ int newCarry = sum / 10;
+ int nodeValue = sum % 10;
+
+ ListNode nextNode = add(
+ (l1 != null) ? l1.next : null,
+ (l2 != null) ? l2.next : null,
+ newCarry
+ );
+
+ return new ListNode(nodeValue, nextNode);
+ }
+
+ public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
+ return add(l1, l2, 0);
+ }
+}
+```
+
+```cpp
+/**
+ * Definition for singly-linked list.
+ * struct ListNode {
+ * int val;
+ * ListNode *next;
+ * ListNode() : val(0), next(nullptr) {}
+ * ListNode(int x) : val(x), next(nullptr) {}
+ * ListNode(int x, ListNode *next) : val(x), next(next) {}
+ * };
+ */
+
+class Solution {
+public:
+ ListNode* add(ListNode* l1, ListNode* l2, int carry) {
+ if (!l1 && !l2 && carry == 0) {
+ return nullptr;
+ }
+
+ int v1 = 0;
+ int v2 = 0;
+ if (l1) {
+ v1 = l1->val;
+ }
+ if (l2) {
+ v2 = l2->val;
+ }
+
+ int sum = v1 + v2 + carry;
+ int newCarry = sum / 10;
+ int nodeValue = sum % 10;
+
+ ListNode* nextNode = add(
+ (l1 ? l1->next : nullptr),
+ (l2 ? l2->next : nullptr),
+ newCarry
+ );
+
+ return new ListNode(nodeValue, nextNode);
+ }
+
+ ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
+ return add(l1, l2, 0);
+ }
+};
+```
+
+```javascript
+/**
+ * Definition for singly-linked list.
+ * class ListNode {
+ * constructor(val = 0, next = null) {
+ * this.val = val;
+ * this.next = next;
+ * }
+ * }
+ */
+
+class Solution {
+ /**
+ * @param {ListNode} l1
+ * @param {ListNode} l2
+ * @param {number} carry
+ * @return {ListNode}
+ */
+ add(l1, l2, carry) {
+ if (!l1 && !l2 && carry === 0) {
+ return null;
+ }
+
+ let v1 = 0;
+ let v2 = 0;
+ if (l1) {
+ v1 = l1.val;
+ }
+ if (l2) {
+ v2 = l2.val;
+ }
+
+ let sum = v1 + v2 + carry;
+ let newCarry = Math.floor(sum / 10);
+ let nodeValue = sum % 10;
+
+ let nextNode = this.add(
+ (l1 ? l1.next : null),
+ (l2 ? l2.next : null),
+ newCarry
+ );
+
+ return new ListNode(nodeValue, nextNode);
+ }
+
+ /**
+ * @param {ListNode} l1
+ * @param {ListNode} l2
+ * @return {ListNode}
+ */
+ addTwoNumbers(l1, l2) {
+ return this.add(l1, l2, 0);
+ }
+}
+```
+
+```csharp
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int val=0, ListNode next=null) {
+ * this.val = val;
+ * this.next = next;
+ * }
+ * }
+ */
+
+public class Solution {
+ public ListNode Add(ListNode l1, ListNode l2, int carry) {
+ if (l1 == null && l2 == null && carry == 0) {
+ return null;
+ }
+
+ int v1 = 0;
+ int v2 = 0;
+ if (l1 != null) {
+ v1 = l1.val;
+ }
+ if (l2 != null) {
+ v2 = l2.val;
+ }
+
+ int sum = v1 + v2 + carry;
+ int newCarry = sum / 10;
+ int nodeValue = sum % 10;
+
+ ListNode nextNode = Add(
+ (l1 != null ? l1.next : null),
+ (l2 != null ? l2.next : null),
+ newCarry
+ );
+
+ return new ListNode(nodeValue) { next = nextNode };
+ }
+
+ public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
+ return Add(l1, l2, 0);
+ }
+}
+```
+
+```go
+/**
+ * Definition for singly-linked list.
+ * type ListNode struct {
+ * Val int
+ * Next *ListNode
+ * }
+ */
+func add(l1 *ListNode, l2 *ListNode, carry int) *ListNode {
+ if l1 == nil && l2 == nil && carry == 0 {
+ return nil
+ }
+
+ v1, v2 := 0, 0
+ if l1 != nil {
+ v1 = l1.Val
+ }
+ if l2 != nil {
+ v2 = l2.Val
+ }
+
+ sum := v1 + v2 + carry
+ carry, val := sum/10, sum%10
+
+ var nextNode *ListNode
+ nextL1 := l1
+ nextL2 := l2
+ if l1 != nil {
+ nextL1 = l1.Next
+ } else {
+ nextL1 = nil
+ }
+ if l2 != nil {
+ nextL2 = l2.Next
+ } else {
+ nextL2 = nil
+ }
+ nextNode = add(nextL1, nextL2, carry)
+
+ return &ListNode{Val: val, Next: nextNode}
+}
+
+func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
+ return add(l1, l2, 0)
+}
+```
+
+```kotlin
+/**
+ * Example:
+ * var li = ListNode(5)
+ * var v = li.`val`
+ * Definition for singly-linked list.
+ * class ListNode(var `val`: Int) {
+ * var next: ListNode? = null
+ * }
+ */
+class Solution {
+ private fun add(l1: ListNode?, l2: ListNode?, carry: Int): ListNode? {
+ if (l1 == null && l2 == null && carry == 0) return null
+
+ val v1 = l1?.`val` ?: 0
+ val v2 = l2?.`val` ?: 0
+ val sum = v1 + v2 + carry
+ val newCarry = sum / 10
+ val valNode = sum % 10
+
+ val nextNode = add(l1?.next, l2?.next, newCarry)
+ return ListNode(valNode).apply { next = nextNode }
+ }
+
+ fun addTwoNumbers(l1: ListNode?, l2: ListNode?): ListNode? {
+ return add(l1, l2, 0)
+ }
+}
+```
+
+```swift
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public var val: Int
+ * public var next: ListNode?
+ * public init() { self.val = 0; self.next = nil; }
+ * public init(_ val: Int) { self.val = val; self.next = nil; }
+ * public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
+ * }
+ */
+class Solution {
+ private func add(_ l1: ListNode?, _ l2: ListNode?, _ carry: Int) -> ListNode? {
+ if l1 == nil && l2 == nil && carry == 0 {
+ return nil
+ }
+
+ let v1 = l1?.val ?? 0
+ let v2 = l2?.val ?? 0
+
+ let sum = v1 + v2 + carry
+ let newCarry = sum / 10
+ let val = sum % 10
+
+ let nextNode = add(l1?.next, l2?.next, newCarry)
+ return ListNode(val, nextNode)
+ }
+
+ func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
+ return add(l1, l2, 0)
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(m + n)$
+* Space complexity: $O(m + n)$
+
+> Where $m$ is the length of $l1$ and $n$ is the length of $l2$.
+
+---
+
+## 2. Iteration
+
+::tabs-start
+
+```python
+# Definition for singly-linked list.
+# class ListNode:
+# def __init__(self, val=0, next=None):
+# self.val = val
+# self.next = next
+
+class Solution:
+ def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
+ dummy = ListNode()
+ cur = dummy
+
+ carry = 0
+ while l1 or l2 or carry:
+ v1 = l1.val if l1 else 0
+ v2 = l2.val if l2 else 0
+
+ # new digit
+ val = v1 + v2 + carry
+ carry = val // 10
+ val = val % 10
+ cur.next = ListNode(val)
+
+ # update ptrs
+ cur = cur.next
+ l1 = l1.next if l1 else None
+ l2 = l2.next if l2 else None
+
+ return dummy.next
+```
+
+```java
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * int val;
+ * ListNode next;
+ * ListNode() {}
+ * ListNode(int val) { this.val = val; }
+ * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
+ * }
+ */
+
+ class Solution {
+ public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
+ ListNode dummy = new ListNode();
+ ListNode cur = dummy;
+
+ int carry = 0;
+ while (l1 != null || l2 != null || carry != 0) {
+ int v1 = (l1 != null) ? l1.val : 0;
+ int v2 = (l2 != null) ? l2.val : 0;
+
+ int val = v1 + v2 + carry;
+ carry = val / 10;
+ val = val % 10;
+ cur.next = new ListNode(val);
+
+ cur = cur.next;
+ l1 = (l1 != null) ? l1.next : null;
+ l2 = (l2 != null) ? l2.next : null;
+ }
+
+ return dummy.next;
+ }
+}
+```
+
+```cpp
+/**
+ * Definition for singly-linked list.
+ * struct ListNode {
+ * int val;
+ * ListNode *next;
+ * ListNode() : val(0), next(nullptr) {}
+ * ListNode(int x) : val(x), next(nullptr) {}
+ * ListNode(int x, ListNode *next) : val(x), next(next) {}
+ * };
+ */
+
+class Solution {
+public:
+ ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
+ ListNode* dummy = new ListNode();
+ ListNode* cur = dummy;
+
+ int carry = 0;
+ while (l1 != nullptr || l2 != nullptr || carry != 0) {
+ int v1 = (l1 != nullptr) ? l1->val : 0;
+ int v2 = (l2 != nullptr) ? l2->val : 0;
+
+ int val = v1 + v2 + carry;
+ carry = val / 10;
+ val = val % 10;
+ cur->next = new ListNode(val);
+
+ cur = cur->next;
+ l1 = (l1 != nullptr) ? l1->next : nullptr;
+ l2 = (l2 != nullptr) ? l2->next : nullptr;
+ }
+ ListNode* res = dummy->next;
+ delete dummy;
+ return res;
+ }
+};
+```
+
+```javascript
+/**
+ * Definition for singly-linked list.
+ * class ListNode {
+ * constructor(val = 0, next = null) {
+ * this.val = val;
+ * this.next = next;
+ * }
+ * }
+ */
+
+class Solution {
+ /**
+ * @param {ListNode} l1
+ * @param {ListNode} l2
+ * @return {ListNode}
+ */
+ addTwoNumbers(l1, l2) {
+ const dummy = new ListNode();
+ let cur = dummy;
+
+ let carry = 0;
+ while (l1 || l2 || carry) {
+ const v1 = l1 ? l1.val : 0;
+ const v2 = l2 ? l2.val : 0;
+
+ let val = v1 + v2 + carry;
+ carry = Math.floor(val / 10);
+ val = val % 10;
+ cur.next = new ListNode(val);
+
+ cur = cur.next;
+ l1 = l1 ? l1.next : null;
+ l2 = l2 ? l2.next : null;
+ }
+
+ return dummy.next;
+ }
+}
+```
+
+```csharp
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public int val;
+ * public ListNode next;
+ * public ListNode(int val=0, ListNode next=null) {
+ * this.val = val;
+ * this.next = next;
+ * }
+ * }
+ */
+
+public class Solution {
+ public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
+ ListNode dummy = new ListNode();
+ ListNode cur = dummy;
+
+ int carry = 0;
+ while (l1 != null || l2 != null || carry != 0) {
+ int v1 = (l1 != null) ? l1.val : 0;
+ int v2 = (l2 != null) ? l2.val : 0;
+
+ int val = v1 + v2 + carry;
+ carry = val / 10;
+ val = val % 10;
+ cur.next = new ListNode(val);
+
+ cur = cur.next;
+ l1 = (l1 != null) ? l1.next : null;
+ l2 = (l2 != null) ? l2.next : null;
+ }
+
+ return dummy.next;
+ }
+}
+```
+
+```go
+/**
+ * Definition for singly-linked list.
+ * type ListNode struct {
+ * Val int
+ * Next *ListNode
+ * }
+ */
+func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
+ dummy := &ListNode{}
+ cur := dummy
+ carry := 0
+
+ for l1 != nil || l2 != nil || carry != 0 {
+ v1 := 0
+ if l1 != nil {
+ v1 = l1.Val
+ l1 = l1.Next
+ }
+
+ v2 := 0
+ if l2 != nil {
+ v2 = l2.Val
+ l2 = l2.Next
+ }
+
+ val := v1 + v2 + carry
+ carry = val / 10
+ cur.Next = &ListNode{Val: val % 10}
+ cur = cur.Next
+ }
+
+ return dummy.Next
+}
+```
+
+```kotlin
+/**
+ * Example:
+ * var li = ListNode(5)
+ * var v = li.`val`
+ * Definition for singly-linked list.
+ * class ListNode(var `val`: Int) {
+ * var next: ListNode? = null
+ * }
+ */
+class Solution {
+ fun addTwoNumbers(l1: ListNode?, l2: ListNode?): ListNode? {
+ val dummy = ListNode(0)
+ var cur = dummy
+ var carry = 0
+
+ var p1 = l1
+ var p2 = l2
+
+ while (p1 != null || p2 != null || carry != 0) {
+ val v1 = p1?.`val` ?: 0
+ val v2 = p2?.`val` ?: 0
+
+ val sum = v1 + v2 + carry
+ carry = sum / 10
+ cur.next = ListNode(sum % 10)
+
+ cur = cur.next!!
+ p1 = p1?.next
+ p2 = p2?.next
+ }
+
+ return dummy.next
+ }
+}
+```
+
+```swift
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ * public var val: Int
+ * public var next: ListNode?
+ * public init() { self.val = 0; self.next = nil; }
+ * public init(_ val: Int) { self.val = val; self.next = nil; }
+ * public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
+ * }
+ */
+class Solution {
+ func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
+ let dummy = ListNode(0)
+ var cur = dummy
+ var l1 = l1, l2 = l2
+ var carry = 0
+
+ while l1 != nil || l2 != nil || carry != 0 {
+ let v1 = l1?.val ?? 0
+ let v2 = l2?.val ?? 0
+
+ let sum = v1 + v2 + carry
+ carry = sum / 10
+ let val = sum % 10
+ cur.next = ListNode(val)
+
+ cur = cur.next!
+ l1 = l1?.next
+ l2 = l2?.next
+ }
+ return dummy.next
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(m + n)$
+* Space complexity:
+ * $O(1)$ extra space.
+ * $O(max(m, n))$ for the output list.
+
+> Where $m$ is the length of $l1$ and $n$ is the length of $l2$.
\ No newline at end of file
diff --git a/articles/all-possible-full-binary-trees.md b/articles/all-possible-full-binary-trees.md
new file mode 100644
index 000000000..1e75b0293
--- /dev/null
+++ b/articles/all-possible-full-binary-trees.md
@@ -0,0 +1,693 @@
+## 1. Recursion
+
+::tabs-start
+
+```python
+# Definition for a binary tree node.
+# class TreeNode:
+# def __init__(self, val=0, left=None, right=None):
+# self.val = val
+# self.left = left
+# self.right = right
+class Solution:
+ def allPossibleFBT(self, n: int) -> List[Optional[TreeNode]]:
+ def backtrack(n):
+ if n == 0:
+ return []
+ if n == 1:
+ return [TreeNode(0)]
+
+ res = []
+ for l in range(n):
+ r = n - 1 - l
+ leftTrees, rightTrees = backtrack(l), backtrack(r)
+
+ for t1 in leftTrees:
+ for t2 in rightTrees:
+ res.append(TreeNode(0, t1, t2))
+ return res
+
+ return backtrack(n)
+```
+
+```java
+/**
+ * Definition for a binary tree node.
+ * public class TreeNode {
+ * int val;
+ * TreeNode left;
+ * TreeNode right;
+ * TreeNode() {}
+ * TreeNode(int val) { this.val = val; }
+ * TreeNode(int val, TreeNode left, TreeNode right) {
+ * this.val = val;
+ * this.left = left;
+ * this.right = right;
+ * }
+ * }
+ */
+public class Solution {
+ public List allPossibleFBT(int n) {
+ return backtrack(n);
+ }
+
+ private List backtrack(int n) {
+ if (n == 0) {
+ return new ArrayList<>();
+ }
+ if (n == 1) {
+ return Arrays.asList(new TreeNode(0));
+ }
+
+ List res = new ArrayList<>();
+ for (int l = 0; l < n; l++) {
+ int r = n - 1 - l;
+ List leftTrees = backtrack(l);
+ List rightTrees = backtrack(r);
+
+ for (TreeNode t1 : leftTrees) {
+ for (TreeNode t2 : rightTrees) {
+ res.add(new TreeNode(0, t1, t2));
+ }
+ }
+ }
+ return res;
+ }
+}
+```
+
+```cpp
+/**
+ * Definition for a binary tree node.
+ * struct TreeNode {
+ * int val;
+ * TreeNode *left;
+ * TreeNode *right;
+ * TreeNode() : val(0), left(nullptr), right(nullptr) {}
+ * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
+ * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
+ * };
+ */
+class Solution {
+public:
+ vector allPossibleFBT(int n) {
+ return backtrack(n);
+ }
+
+private:
+ vector backtrack(int n) {
+ if (n == 0) {
+ return {};
+ }
+ if (n == 1) {
+ return {new TreeNode(0)};
+ }
+
+ vector res;
+ for (int l = 0; l < n; l++) {
+ int r = n - 1 - l;
+ vector leftTrees = backtrack(l);
+ vector rightTrees = backtrack(r);
+
+ for (auto& t1 : leftTrees) {
+ for (auto& t2 : rightTrees) {
+ res.push_back(new TreeNode(0, t1, t2));
+ }
+ }
+ }
+ return res;
+ }
+};
+```
+
+```javascript
+/**
+ * Definition for a binary tree node.
+ * class TreeNode {
+ * constructor(val = 0, left = null, right = null) {
+ * this.val = val;
+ * this.left = left;
+ * this.right = right;
+ * }
+ * }
+ */
+class Solution {
+ /**
+ * @param {number} n
+ * @return {TreeNode[]}
+ */
+ allPossibleFBT(n) {
+ const backtrack = (n) => {
+ if (n === 0) {
+ return [];
+ }
+ if (n === 1) {
+ return [new TreeNode(0)];
+ }
+
+ let res = [];
+ for (let l = 0; l < n; l++) {
+ let r = n - 1 - l;
+ let leftTrees = backtrack(l);
+ let rightTrees = backtrack(r);
+
+ for (let t1 of leftTrees) {
+ for (let t2 of rightTrees) {
+ res.push(new TreeNode(0, t1, t2));
+ }
+ }
+ }
+ return res;
+ };
+
+ return backtrack(n);
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(2 ^ n)$
+* Space complexity: $O(n * 2 ^ n)$
+
+---
+
+## 2. Recursion (Optimal)
+
+::tabs-start
+
+```python
+# Definition for a binary tree node.
+# class TreeNode:
+# def __init__(self, val=0, left=None, right=None):
+# self.val = val
+# self.left = left
+# self.right = right
+class Solution:
+ def allPossibleFBT(self, n: int) -> List[Optional[TreeNode]]:
+ if n % 2 == 0:
+ return []
+ if n == 1:
+ return [TreeNode(0)]
+
+ res = []
+ for left in range(1, n, 2):
+ leftSubTree = self.allPossibleFBT(left)
+ rightSubTree = self.allPossibleFBT(n - 1 - left)
+ for l in leftSubTree:
+ for r in rightSubTree:
+ root = TreeNode(0, l, r)
+ res.append(root)
+ return res
+```
+
+```java
+/**
+ * Definition for a binary tree node.
+ * public class TreeNode {
+ * int val;
+ * TreeNode left;
+ * TreeNode right;
+ * TreeNode() {}
+ * TreeNode(int val) { this.val = val; }
+ * TreeNode(int val, TreeNode left, TreeNode right) {
+ * this.val = val;
+ * this.left = left;
+ * this.right = right;
+ * }
+ * }
+ */
+public class Solution {
+ public List allPossibleFBT(int n) {
+ if (n % 2 == 0) {
+ return new ArrayList<>();
+ }
+ if (n == 1) {
+ return Arrays.asList(new TreeNode(0));
+ }
+
+ List res = new ArrayList<>();
+ for (int left = 1; left < n; left += 2) {
+ List leftSubTree = allPossibleFBT(left);
+ List rightSubTree = allPossibleFBT(n - 1 - left);
+ for (TreeNode l : leftSubTree) {
+ for (TreeNode r : rightSubTree) {
+ TreeNode root = new TreeNode(0, l, r);
+ res.add(root);
+ }
+ }
+ }
+ return res;
+ }
+}
+```
+
+```cpp
+/**
+ * Definition for a binary tree node.
+ * struct TreeNode {
+ * int val;
+ * TreeNode *left;
+ * TreeNode *right;
+ * TreeNode() : val(0), left(nullptr), right(nullptr) {}
+ * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
+ * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
+ * };
+ */
+class Solution {
+public:
+ vector allPossibleFBT(int n) {
+ if (n % 2 == 0) {
+ return {};
+ }
+ if (n == 1) {
+ return {new TreeNode(0)};
+ }
+
+ vector res;
+ for (int left = 1; left < n; left += 2) {
+ vector leftSubTree = allPossibleFBT(left);
+ vector rightSubTree = allPossibleFBT(n - 1 - left);
+ for (auto& l : leftSubTree) {
+ for (auto& r : rightSubTree) {
+ TreeNode* root = new TreeNode(0, l, r);
+ res.push_back(root);
+ }
+ }
+ }
+ return res;
+ }
+};
+```
+
+```javascript
+/**
+ * Definition for a binary tree node.
+ * class TreeNode {
+ * constructor(val = 0, left = null, right = null) {
+ * this.val = val;
+ * this.left = left;
+ * this.right = right;
+ * }
+ * }
+ */
+class Solution {
+ /**
+ * @param {number} n
+ * @return {TreeNode[]}
+ */
+ allPossibleFBT(n) {
+ if (n % 2 === 0) {
+ return [];
+ }
+ if (n === 1) {
+ return [new TreeNode(0)];
+ }
+
+ let res = [];
+ for (let left = 1; left < n; left += 2) {
+ let leftSubTree = this.allPossibleFBT(left);
+ let rightSubTree = this.allPossibleFBT(n - 1 - left);
+ for (let l of leftSubTree) {
+ for (let r of rightSubTree) {
+ let root = new TreeNode(0, l, r);
+ res.push(root);
+ }
+ }
+ }
+ return res;
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(2 ^ n)$
+* Space complexity: $O(n * 2 ^ n)$
+
+---
+
+## 3. Dynamic Programming (Top-Down)
+
+::tabs-start
+
+```python
+# Definition for a binary tree node.
+# class TreeNode:
+# def __init__(self, val=0, left=None, right=None):
+# self.val = val
+# self.left = left
+# self.right = right
+class Solution:
+ def allPossibleFBT(self, n: int) -> List[Optional[TreeNode]]:
+ dp = {}
+
+ def dfs(n):
+ if n % 2 == 0:
+ return []
+ if n == 1:
+ return [TreeNode(0)]
+ if n in dp:
+ return dp[n]
+
+ res = []
+ for left in range(1, n, 2):
+ leftSubTree = dfs(left)
+ rightSubTree = dfs(n - 1 - left)
+ for l in leftSubTree:
+ for r in rightSubTree:
+ res.append(TreeNode(0, l, r))
+
+ dp[n] = res
+ return res
+
+ return dfs(n)
+```
+
+```java
+/**
+ * Definition for a binary tree node.
+ * public class TreeNode {
+ * int val;
+ * TreeNode left;
+ * TreeNode right;
+ * TreeNode() {}
+ * TreeNode(int val) { this.val = val; }
+ * TreeNode(int val, TreeNode left, TreeNode right) {
+ * this.val = val;
+ * this.left = left;
+ * this.right = right;
+ * }
+ * }
+ */
+public class Solution {
+ private List[] dp;
+
+ public List allPossibleFBT(int n) {
+ dp = new ArrayList[n + 1];
+ return dfs(n);
+ }
+
+ private List dfs(int n) {
+ if (n % 2 == 0) {
+ return new ArrayList<>();
+ }
+ if (n == 1) {
+ return Arrays.asList(new TreeNode(0));
+ }
+ if (dp[n] != null) {
+ return dp[n];
+ }
+
+ List res = new ArrayList<>();
+ for (int left = 1; left < n; left += 2) {
+ List leftSubTree = dfs(left);
+ List rightSubTree = dfs(n - 1 - left);
+ for (TreeNode l : leftSubTree) {
+ for (TreeNode r : rightSubTree) {
+ res.add(new TreeNode(0, l, r));
+ }
+ }
+ }
+
+ return dp[n] = res;
+ }
+}
+```
+
+```cpp
+/**
+ * Definition for a binary tree node.
+ * struct TreeNode {
+ * int val;
+ * TreeNode *left;
+ * TreeNode *right;
+ * TreeNode() : val(0), left(nullptr), right(nullptr) {}
+ * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
+ * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
+ * };
+ */
+class Solution {
+private:
+ vector> dp;
+
+public:
+ vector allPossibleFBT(int n) {
+ dp.resize(n + 1);
+ return dfs(n);
+ }
+
+ vector dfs(int n) {
+ if (n % 2 == 0) {
+ return {};
+ }
+ if (n == 1) {
+ return {new TreeNode(0)};
+ }
+ if (!dp[n].empty()) {
+ return dp[n];
+ }
+
+ vector res;
+ for (int left = 1; left < n; left += 2) {
+ vector leftSubTree = dfs(left);
+ vector rightSubTree = dfs(n - 1 - left);
+ for (auto& l : leftSubTree) {
+ for (auto& r : rightSubTree) {
+ res.push_back(new TreeNode(0, l, r));
+ }
+ }
+ }
+
+ return dp[n] = res;
+ }
+};
+```
+
+```javascript
+/**
+ * Definition for a binary tree node.
+ * class TreeNode {
+ * constructor(val = 0, left = null, right = null) {
+ * this.val = val;
+ * this.left = left;
+ * this.right = right;
+ * }
+ * }
+ */
+class Solution {
+ /**
+ * @param {number} n
+ * @return {TreeNode[]}
+ */
+ allPossibleFBT(n) {
+ let dp = new Array(n + 1);
+
+ const dfs = (n) => {
+ if (n % 2 === 0) {
+ return [];
+ }
+ if (n === 1) {
+ return [new TreeNode(0)];
+ }
+ if (dp[n]) {
+ return dp[n];
+ }
+
+ let res = [];
+ for (let left = 1; left < n; left += 2) {
+ let leftSubTree = dfs(left);
+ let rightSubTree = dfs(n - 1 - left);
+ for (let t1 of leftSubTree) {
+ for (let t2 of rightSubTree) {
+ res.push(new TreeNode(0, t1, t2));
+ }
+ }
+ }
+
+ return (dp[n] = res);
+ };
+
+ return dfs(n);
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(2 ^ n)$
+* Space complexity: $O(n * 2 ^ n)$
+
+---
+
+## 4. Dynamic Programming (Bottom-Up)
+
+::tabs-start
+
+```python
+# Definition for a binary tree node.
+# class TreeNode:
+# def __init__(self, val=0, left=None, right=None):
+# self.val = val
+# self.left = left
+# self.right = right
+class Solution:
+ def allPossibleFBT(self, n: int) -> List[Optional[TreeNode]]:
+ if n % 2 == 0:
+ return []
+
+ dp = [[] for _ in range(n + 1)]
+ dp[1] = [TreeNode(0)]
+
+ for nodes in range(3, n + 1, 2):
+ res = []
+ for left in range(1, nodes, 2):
+ right = nodes - 1 - left
+ for t1 in dp[left]:
+ for t2 in dp[right]:
+ res.append(TreeNode(0, t1, t2))
+ dp[nodes] = res
+
+ return dp[n]
+```
+
+```java
+/**
+ * Definition for a binary tree node.
+ * public class TreeNode {
+ * int val;
+ * TreeNode left;
+ * TreeNode right;
+ * TreeNode() {}
+ * TreeNode(int val) { this.val = val; }
+ * TreeNode(int val, TreeNode left, TreeNode right) {
+ * this.val = val;
+ * this.left = left;
+ * this.right = right;
+ * }
+ * }
+ */
+public class Solution {
+ public List allPossibleFBT(int n) {
+ if (n % 2 == 0) {
+ return new ArrayList<>();
+ }
+
+ List[] dp = new ArrayList[n + 1];
+ for (int i = 0; i <= n; i++) {
+ dp[i] = new ArrayList<>();
+ }
+ dp[1].add(new TreeNode(0));
+
+ for (int nodes = 3; nodes <= n; nodes += 2) {
+ List res = new ArrayList<>();
+ for (int left = 1; left < nodes; left += 2) {
+ int right = nodes - 1 - left;
+ for (TreeNode t1 : dp[left]) {
+ for (TreeNode t2 : dp[right]) {
+ res.add(new TreeNode(0, t1, t2));
+ }
+ }
+ }
+ dp[nodes] = res;
+ }
+
+ return dp[n];
+ }
+}
+```
+
+```cpp
+/**
+ * Definition for a binary tree node.
+ * struct TreeNode {
+ * int val;
+ * TreeNode *left;
+ * TreeNode *right;
+ * TreeNode() : val(0), left(nullptr), right(nullptr) {}
+ * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
+ * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
+ * };
+ */
+class Solution {
+public:
+ vector allPossibleFBT(int n) {
+ if (n % 2 == 0) {
+ return {};
+ }
+
+ vector> dp(n + 1);
+ dp[1].push_back(new TreeNode(0));
+
+ for (int nodes = 3; nodes <= n; nodes += 2) {
+ vector res;
+ for (int left = 1; left < nodes; left += 2) {
+ int right = nodes - 1 - left;
+ for (auto& t1 : dp[left]) {
+ for (auto& t2 : dp[right]) {
+ res.push_back(new TreeNode(0, t1, t2));
+ }
+ }
+ }
+ dp[nodes] = res;
+ }
+
+ return dp[n];
+ }
+};
+```
+
+```javascript
+/**
+ * Definition for a binary tree node.
+ * class TreeNode {
+ * constructor(val = 0, left = null, right = null) {
+ * this.val = val;
+ * this.left = left;
+ * this.right = right;
+ * }
+ * }
+ */
+class Solution {
+ /**
+ * @param {number} n
+ * @return {TreeNode[]}
+ */
+ allPossibleFBT(n) {
+ if (n % 2 === 0) {
+ return [];
+ }
+
+ let dp = Array.from({ length: n + 1 }, () => []);
+ dp[1] = [new TreeNode(0)];
+
+ for (let nodes = 3; nodes <= n; nodes += 2) {
+ let res = [];
+ for (let left = 1; left < nodes; left += 2) {
+ let right = nodes - 1 - left;
+ for (let t1 of dp[left]) {
+ for (let t2 of dp[right]) {
+ res.push(new TreeNode(0, t1, t2));
+ }
+ }
+ }
+ dp[nodes] = res;
+ }
+
+ return dp[n];
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(2 ^ n)$
+* Space complexity: $O(n * 2 ^ n)$
\ No newline at end of file
diff --git a/articles/anagram-groups.md b/articles/anagram-groups.md
new file mode 100644
index 000000000..bf41aaa79
--- /dev/null
+++ b/articles/anagram-groups.md
@@ -0,0 +1,322 @@
+## 1. Sorting
+
+::tabs-start
+
+```python
+class Solution:
+ def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
+ res = defaultdict(list)
+ for s in strs:
+ sortedS = ''.join(sorted(s))
+ res[sortedS].append(s)
+ return list(res.values())
+```
+
+```java
+public class Solution {
+ public List> groupAnagrams(String[] strs) {
+ Map> res = new HashMap<>();
+ for (String s : strs) {
+ char[] charArray = s.toCharArray();
+ Arrays.sort(charArray);
+ String sortedS = new String(charArray);
+ res.putIfAbsent(sortedS, new ArrayList<>());
+ res.get(sortedS).add(s);
+ }
+ return new ArrayList<>(res.values());
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ vector> groupAnagrams(vector& strs) {
+ unordered_map> res;
+ for (const auto& s : strs) {
+ string sortedS = s;
+ sort(sortedS.begin(), sortedS.end());
+ res[sortedS].push_back(s);
+ }
+ vector> result;
+ for (auto& pair : res) {
+ result.push_back(pair.second);
+ }
+ return result;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {string[]} strs
+ * @return {string[][]}
+ */
+ groupAnagrams(strs) {
+ const res = {};
+ for (let s of strs) {
+ const sortedS = s.split('').sort().join('');
+ if (!res[sortedS]) {
+ res[sortedS] = [];
+ }
+ res[sortedS].push(s);
+ }
+ return Object.values(res);
+ }
+}
+```
+
+```csharp
+public class Solution {
+ public List> GroupAnagrams(string[] strs) {
+ var res = new Dictionary>();
+ foreach (var s in strs) {
+ char[] charArray = s.ToCharArray();
+ Array.Sort(charArray);
+ string sortedS = new string(charArray);
+ if (!res.ContainsKey(sortedS)) {
+ res[sortedS] = new List();
+ }
+ res[sortedS].Add(s);
+ }
+ return res.Values.ToList>();
+ }
+}
+```
+
+```go
+func groupAnagrams(strs []string) [][]string {
+ res := make(map[string][]string)
+
+ for _, s := range strs {
+ sortedS := sortString(s)
+ res[sortedS] = append(res[sortedS], s)
+ }
+
+ var result [][]string
+ for _, group := range res {
+ result = append(result, group)
+ }
+ return result
+}
+
+func sortString(s string) string {
+ characters := []rune(s)
+ sort.Slice(characters, func(i, j int) bool {
+ return characters[i] < characters[j]
+ })
+ return string(characters)
+}
+```
+
+```kotlin
+class Solution {
+ fun groupAnagrams(strs: Array): List> {
+ val res = mutableMapOf>()
+
+ for (s in strs) {
+ val sortedS = s.toCharArray().sorted().joinToString("")
+ res.getOrPut(sortedS) { mutableListOf() }.add(s)
+ }
+
+ return res.values.toList()
+ }
+}
+```
+
+```swift
+class Solution {
+ func groupAnagrams(_ strs: [String]) -> [[String]] {
+ var res = [String: [String]]()
+
+ for s in strs {
+ let sortedS = String(s.sorted())
+ res[sortedS, default: []].append(s)
+ }
+
+ return Array(res.values)
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(m * n \log n)$
+* Space complexity: $O(m * n)$
+
+> Where $m$ is the number of strings and $n$ is the length of the longest string.
+
+---
+
+## 2. Hash Table
+
+::tabs-start
+
+```python
+class Solution:
+ def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
+ res = defaultdict(list)
+ for s in strs:
+ count = [0] * 26
+ for c in s:
+ count[ord(c) - ord('a')] += 1
+ res[tuple(count)].append(s)
+ return list(res.values())
+```
+
+```java
+public class Solution {
+ public List> groupAnagrams(String[] strs) {
+ Map> res = new HashMap<>();
+ for (String s : strs) {
+ int[] count = new int[26];
+ for (char c : s.toCharArray()) {
+ count[c - 'a']++;
+ }
+ String key = Arrays.toString(count);
+ res.putIfAbsent(key, new ArrayList<>());
+ res.get(key).add(s);
+ }
+ return new ArrayList<>(res.values());
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ vector> groupAnagrams(vector& strs) {
+ unordered_map> res;
+ for (const auto& s : strs) {
+ vector count(26, 0);
+ for (char c : s) {
+ count[c - 'a']++;
+ }
+ string key = to_string(count[0]);
+ for (int i = 1; i < 26; ++i) {
+ key += ',' + to_string(count[i]);
+ }
+ res[key].push_back(s);
+ }
+ vector> result;
+ for (const auto& pair : res) {
+ result.push_back(pair.second);
+ }
+ return result;
+ }
+};
+```
+
+```javascript
+class Solution {
+ /**
+ * @param {string[]} strs
+ * @return {string[][]}
+ */
+ groupAnagrams(strs) {
+ const res = {};
+ for (let s of strs) {
+ const count = new Array(26).fill(0);
+ for (let c of s) {
+ count[c.charCodeAt(0) - 'a'.charCodeAt(0)] += 1;
+ }
+ const key = count.join(',');
+ if (!res[key]) {
+ res[key] = [];
+ }
+ res[key].push(s);
+ }
+ return Object.values(res);
+ }
+}
+```
+
+```csharp
+public class Solution {
+ public List> GroupAnagrams(string[] strs) {
+ var res = new Dictionary>();
+ foreach (var s in strs) {
+ int[] count = new int[26];
+ foreach (char c in s) {
+ count[c - 'a']++;
+ }
+ string key = string.Join(",", count);
+ if (!res.ContainsKey(key)) {
+ res[key] = new List();
+ }
+ res[key].Add(s);
+ }
+ return res.Values.ToList>();
+ }
+}
+```
+
+```go
+func groupAnagrams(strs []string) [][]string {
+ res := make(map[[26]int][]string)
+
+ for _, s := range strs {
+ var count [26]int
+ for _, c := range s {
+ count[c-'a']++
+ }
+ res[count] = append(res[count], s)
+ }
+
+ var result [][]string
+ for _, group := range res {
+ result = append(result, group)
+ }
+ return result
+}
+```
+
+```kotlin
+class Solution {
+ fun groupAnagrams(strs: Array): List> {
+ val res = HashMap, MutableList>()
+
+ for (s in strs) {
+ val count = MutableList(26) { 0 }
+ for (c in s) {
+ count[c - 'a']++
+ }
+ res.getOrPut(count) { mutableListOf() }.add(s)
+ }
+
+ return res.values.toList()
+ }
+}
+```
+
+```swift
+class Solution {
+ func groupAnagrams(_ strs: [String]) -> [[String]] {
+ var res = [Array: [String]]()
+
+ for s in strs {
+ var count = [Int](repeating: 0, count: 26)
+ for c in s {
+ count[Int(c.asciiValue!) - 97] += 1
+ }
+ res[count, default: []].append(s)
+ }
+
+ return Array(res.values)
+ }
+}
+```
+
+::tabs-end
+
+### Time & Space Complexity
+
+* Time complexity: $O(m * n)$
+* Space complexity:
+ * $O(m)$ extra space.
+ * $O(m * n)$ space for the output list.
+
+> Where $m$ is the number of strings and $n$ is the length of the longest string.
\ No newline at end of file
diff --git a/articles/analyze-user-website-visit-pattern.md b/articles/analyze-user-website-visit-pattern.md
new file mode 100644
index 000000000..c43fce6ba
--- /dev/null
+++ b/articles/analyze-user-website-visit-pattern.md
@@ -0,0 +1,224 @@
+## 1. Hash Map
+
+::tabs-start
+
+```python
+class Solution:
+ def mostVisitedPattern(self, username: List[str], timestamp: List[int], website: List[str]) -> List[str]:
+ arr = list(zip(timestamp, username, website))
+ arr.sort()
+
+ mp = defaultdict(list)
+ for time, user, site in arr:
+ mp[user].append(site)
+
+ count = defaultdict(int)
+ for user in mp:
+ patterns = set()
+ cur = mp[user]
+ for i in range(len(cur)):
+ for j in range(i + 1, len(cur)):
+ for k in range(j + 1, len(cur)):
+ patterns.add((cur[i], cur[j], cur[k]))
+ for p in patterns:
+ count[p] += 1
+
+ max_count = 0
+ res = tuple()
+ for pattern in count:
+ if count[pattern] > max_count or (count[pattern] == max_count and pattern < res):
+ max_count = count[pattern]
+ res = pattern
+
+ return list(res)
+```
+
+```java
+public class Solution {
+ public List mostVisitedPattern(String[] username, int[] timestamp, String[] website) {
+ int n = timestamp.length;
+ List arr = new ArrayList<>();
+ for (int i = 0; i < n; i++) arr.add(new int[]{timestamp[i], i});
+ arr.sort((a, b) -> Integer.compare(a[0], b[0]));
+
+ Map> mp = new HashMap<>();
+ for (int[] p : arr) {
+ int idx = p[1];
+ mp.computeIfAbsent(username[idx], k -> new ArrayList<>()).add(website[idx]);
+ }
+
+ Map count = new HashMap<>();
+ for (String user : mp.keySet()) {
+ List cur = mp.get(user);
+ Set patterns = new HashSet<>();
+ for (int i = 0; i < cur.size(); i++)
+ for (int j = i + 1; j < cur.size(); j++)
+ for (int k = j + 1; k < cur.size(); k++)
+ patterns.add(cur.get(i) + "#" + cur.get(j) + "#" + cur.get(k));
+ for (String p : patterns)
+ count.put(p, count.getOrDefault(p, 0) + 1);
+ }
+
+ String res = "";
+ int max_count = 0;
+ for (String p : count.keySet()) {
+ int c = count.get(p);
+ if (c > max_count || (c == max_count && p.compareTo(res) < 0)) {
+ max_count = c;
+ res = p;
+ }
+ }
+ return Arrays.asList(res.split("#"));
+ }
+}
+```
+
+```cpp
+class Solution {
+public:
+ vector mostVisitedPattern(vector