From fabcf449e3279f38344f6585559e1f2555868966 Mon Sep 17 00:00:00 2001 From: hitanshu310 Date: Fri, 28 Feb 2025 16:38:50 +0530 Subject: [PATCH] Added new question --- Questions.md | 1 + dsa/scripts/generate_leetcode_structure.py | 53 +++++++++++++++++++ .../dsa/array/merge_intervals/Solution.java | 8 +++ .../dsa/array/merge_intervals/Solvable.java | 5 ++ .../.LCKSolutionTest.java~ | 1 + .../array/merge_intervals/SolutionTest.java | 16 ++++++ 6 files changed, 84 insertions(+) create mode 100644 dsa/scripts/generate_leetcode_structure.py create mode 100644 dsa/src/main/java/com/hithomelabs/dsa/array/merge_intervals/Solution.java create mode 100644 dsa/src/main/java/com/hithomelabs/dsa/array/merge_intervals/Solvable.java create mode 100644 dsa/src/test/java/com/hithomelabs/dsa/array/best_time_to_buy_and_sell_stock/.LCKSolutionTest.java~ create mode 100644 dsa/src/test/java/com/hithomelabs/dsa/array/merge_intervals/SolutionTest.java diff --git a/Questions.md b/Questions.md index 9b344fc..aa6caae 100644 --- a/Questions.md +++ b/Questions.md @@ -11,3 +11,4 @@ 7. [Search in Rotated Sorted Array](https://leetcode.com/problems/search-in-rotated-sorted-array/description/) `Blind 75` `Leetcode 150` `Striver` 8. [3sum](https://leetcode.com/problems/3sum/description/) `Blind 75` `Leetcode 150` `Striver` 9. [Container With Most Water](https://leetcode.com/problems/container-with-most-water/description/?envType=study-plan-v2&envId=top-interview-150) `Blind 75` `Leetcode 150` +10. [Merge Intervals](https://leetcode.com/problems/merge-intervals/description/) `Leetcode 150` `Striver` diff --git a/dsa/scripts/generate_leetcode_structure.py b/dsa/scripts/generate_leetcode_structure.py new file mode 100644 index 0000000..5923505 --- /dev/null +++ b/dsa/scripts/generate_leetcode_structure.py @@ -0,0 +1,53 @@ +import os +import sys + +def create_package_structure(problem_name, method_signature): + """Creates the package structure for a LeetCode problem""" + + # Convert problem name to package format (lowercase with underscores) + package_name = problem_name.lower().replace(' ', '_') + + # Base package path + base_path = "dsa/src/main/java/com/hithomelabs/dsa/array" + package_path = f"{base_path}/{package_name}" + + # Create package directory + os.makedirs(package_path, exist_ok=True) + + # Create Solution.java + solution_content = f"""package com.hithomelabs.dsa.array.{package_name}; + +public class Solution implements Solvable {{ + {method_signature} {{ + // TODO: Implement solution + throw new UnsupportedOperationException("Not implemented yet"); + }} +}} +""" + + # Create Solvable.java + solvable_content = f"""package com.hithomelabs.dsa.array.{package_name}; + +interface Solvable {{ + {method_signature}; +}} +""" + + # Write files + with open(f"{package_path}/Solution.java", "w") as f: + f.write(solution_content) + + with open(f"{package_path}/Solvable.java", "w") as f: + f.write(solvable_content) + +def main(): + if len(sys.argv) != 3: + print("Usage: python generate_leetcode_structure.py \"Problem Name\" \"method_signature\"") + sys.exit(1) + + problem_name = sys.argv[1] + method_signature = sys.argv[2] + create_package_structure(problem_name, method_signature) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/dsa/src/main/java/com/hithomelabs/dsa/array/merge_intervals/Solution.java b/dsa/src/main/java/com/hithomelabs/dsa/array/merge_intervals/Solution.java new file mode 100644 index 0000000..3739382 --- /dev/null +++ b/dsa/src/main/java/com/hithomelabs/dsa/array/merge_intervals/Solution.java @@ -0,0 +1,8 @@ +package com.hithomelabs.dsa.array.merge_intervals; + + +public class Solution { + public int[][] merge(int[][] intervals) { + // Implementation of the merge function + } +} \ No newline at end of file diff --git a/dsa/src/main/java/com/hithomelabs/dsa/array/merge_intervals/Solvable.java b/dsa/src/main/java/com/hithomelabs/dsa/array/merge_intervals/Solvable.java new file mode 100644 index 0000000..c6ffe12 --- /dev/null +++ b/dsa/src/main/java/com/hithomelabs/dsa/array/merge_intervals/Solvable.java @@ -0,0 +1,5 @@ +package com.hithomelabs.dsa.array.merge_intervals; + +interface Solvable { + int[][] solve(int[][] intervals); +} \ No newline at end of file diff --git a/dsa/src/test/java/com/hithomelabs/dsa/array/best_time_to_buy_and_sell_stock/.LCKSolutionTest.java~ b/dsa/src/test/java/com/hithomelabs/dsa/array/best_time_to_buy_and_sell_stock/.LCKSolutionTest.java~ new file mode 100644 index 0000000..dc562cd --- /dev/null +++ b/dsa/src/test/java/com/hithomelabs/dsa/array/best_time_to_buy_and_sell_stock/.LCKSolutionTest.java~ @@ -0,0 +1 @@ +/home/hitanshu/Projects/DSA_sheets/dsa/src/test/java/com/hithomelabs/dsa/array/best_time_to_buy_and_sell_stock/SolutionTest.java \ No newline at end of file diff --git a/dsa/src/test/java/com/hithomelabs/dsa/array/merge_intervals/SolutionTest.java b/dsa/src/test/java/com/hithomelabs/dsa/array/merge_intervals/SolutionTest.java new file mode 100644 index 0000000..572504e --- /dev/null +++ b/dsa/src/test/java/com/hithomelabs/dsa/array/merge_intervals/SolutionTest.java @@ -0,0 +1,16 @@ +package com.hithomelabs.dsa.array.merge_intervals; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +public class SolutionTest { + @Test + void testMerge() { + Solution solution = new Solution(); + + // Test case from the Leetcode URL for Merge Intervals + int[][] intervals1 = {{1, 3}, {2, 6}, {8, 10}, {15, 18}}; + int[][] expected1 = {{1, 6}, {8, 10}, {15, 18}}; + int[][] result1 = solution.merge(intervals1); + assertArrayEquals(expected1, result1); + } +}