{"id":22139583,"url":"https://github.com/monalbarse/dsa","last_synced_at":"2025-03-24T10:42:44.466Z","repository":{"id":251668494,"uuid":"819759718","full_name":"MonalBarse/DSA","owner":"MonalBarse","description":"A repository for practicing and learning Data Structures and Algorithms (DSA) using Java. It also includes Bash scripts for automating the compilation and execution of Java programs.","archived":false,"fork":false,"pushed_at":"2025-03-21T06:11:17.000Z","size":191,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T07:22:51.491Z","etag":null,"topics":["arrays","backtracking","oops-in-java","recursion"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MonalBarse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-25T06:39:03.000Z","updated_at":"2025-03-21T06:11:21.000Z","dependencies_parsed_at":"2025-01-18T23:23:26.973Z","dependency_job_id":"edce6902-a834-4f13-a2b3-e9e7175d5be7","html_url":"https://github.com/MonalBarse/DSA","commit_stats":null,"previous_names":["monalbarse/dsa"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MonalBarse%2FDSA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MonalBarse%2FDSA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MonalBarse%2FDSA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MonalBarse%2FDSA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MonalBarse","download_url":"https://codeload.github.com/MonalBarse/DSA/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245257081,"owners_count":20585970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arrays","backtracking","oops-in-java","recursion"],"created_at":"2024-12-01T20:15:39.982Z","updated_at":"2025-03-24T10:42:44.460Z","avatar_url":"https://github.com/MonalBarse.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DSA (JAVA)\n\n## Structure\n\n- `src/`: Contains all the Java source files.\n- `bin/`: Contains the compiled Java class files.\n\n```bash\n\n    git clone https://github.com/MonalBarse/DSA\n```\n\n## Bash Scripts\n\n### compile.sh\n\nA script to compile all Java files in the `src/` directory and place the compiled `.class` files in the `bin/` directory.\n\n### run.sh\n\nA script to compile the Java files using `compile.sh` and then run a specified Java class.\n\n## Add a ./compile.sh file to each directory\n\n- for eg. in Recusion directory, add a compile.sh file\n\n```bash\n\n    #!/bin/bash\n\n    # Directory paths\n    SRC_DIR=\"src\"\n    BIN_DIR=\"bin\"\n\n    # Create the bin directory if it doesn't exist\n    mkdir -p $BIN_DIR\n\n    # Compile all .java files in src/ and place .class files into bin/\n    javac -d $BIN_DIR $SRC_DIR/com/monal/*.java\n\n    # Check if compilation was successful\n    if [ $? -eq 0 ]; then\n    echo \"Compilation successful.\"\n    else\n    echo \"Compilation failed.\"\n    fi\n\n\n```\n\n- Create a run.sh file in the same directory\n\n```bash\n\n\n#!/bin/bash\n\n# Compile Java files using compile.sh\n./compile.sh\n\n# Check if compilation was successful\nif [ $? -eq 0 ]; then\n    # Navigate to the bin/ directory\n    cd ../bin\n\n    # Run the specified Java class\n    java com.monal.$1\n\n    # Navigate back to the original directory\n    cd -\nelse\n    echo \"Compilation failed. Please fix errors before running.\"\nfi\n\n```\n\n- Make sure both compile.sh and run.sh have executable permissions (chmod +x compile.sh run.sh).\n\n## How to Use\n\n1. **Compile Java Files**:\n\n   ```sh\n   ./Topic/\n       ./compile.sh\n   ```\n\n2. **Run Class Files**:\n   ```sh\n   ./Topic/\n       ./run.sh Filename\n   ```\n\n# CheckList\n\n## Introduction to Java\n\n- [x] Introduction\n- [x] How it works\n- [x] Setup Installation\n- [x] Input and Output in Java\n\n## Conditionals \u0026 Loops in Java\n\n- [x] if else\n- [x] loops\n- [x] Switch statements\n\n## Data types\n\n- [x] Coding best practices\n\n## Functions\n\n- [x] Introduction\n- [x] Scoping in Java\n- [x] Shadowing\n- [x] Variable Length Arguments\n- [x] Overloading\n\n## Arrays\n\n- [x] Introduction\n- [x] Memory management\n- [x] Input and Output\n- [x] ArrayList Introduction\n- [x] Sorting\n  - [x] Insertion Sort\n  - [x] Selection Sort\n  - [x] Bubble Sort\n  - [ ] Cyclic Sort (Merge sort etc after recursion)\n\n## Searching\n\n- [x] Linear Search\n- [x] Binary Search\n- [x] Modified Binary Search\n- [x] Binary Search Interview questions\n- [ ] Binary Search on 2D Arrays\n- [x] Pattern questions\n\n## Strings\n\n- [x] Introduction\n- [x] How Strings work\n- [x] Comparison of methods\n- [x] Operations in Strings\n- [x] StringBuilder in java\n\n## Maths for DSA\n\n- [x] Introduction\n- [x] Complete Bitwise Operators\n- [ ] Prime numbers\n- [ ] HCF / LCM\n- [ ] Sieve of Eratosthenes\n- [ ] Newton's Square Root Method\n- [ ] Number Theory\n- [ ] Euclidean algorithm\n\n## Space and Time Complexity Analysis\n\n- [x] Introduction\n- [x] Comparison of various cases\n- [x] Solving Linear Recurrence Relations\n- [x] Solving Divide and Conquer Recurrence Relations\n- [x] Big-O, Big-Omega, Big-Theta Notations\n- [ ] Get equation of any relation easily - Akra Bazzi formula\n- [x] Complexity discussion of all the problems we do\n- [ ] Space Complexity\n- [ ] Memory Allocation of various languages\n- [ ] NP Completeness and Hardness\n\n## Recursion\n\n- [x] Introduction\n- [x] Why recursion?\n- [x] Flow of recursive programs - stacks\n- [x] Convert recursion to iteration\n- [x] Tree building of function calls\n- [x] Tail recursion\n- [x] Sorting\n  - [x] Merge Sort\n  - [x] Quick Sort\n\n## Backtracking\n\n- [x] Sudoku Solver\n- [x] N-Queens\n- [x] N-Knights\n- [x] Maze problems\n- [x] Recursion String Problems\n- [x] Recursion Array Problems\n- [x] Recursion Pattern Problems\n- [x] Subset Questions\n- [x] Recursion - Permutations, Dice Throws etc Questions\n\n## Object Oriented Programming\n\n- [x] Introduction\n- [x] Classes \u0026 its instances\n- [x] this keyword in Java\n- [x] Properties\n- [ ] Inheritance\n- [ ] Abstraction\n- [ ] Polymorphism\n- [ ] Encapsulation\n- [ ] Overloading \u0026 Overriding\n- [ ] Static \u0026 Non-Static\n- [ ] Access Control\n- [ ] Interfaces\n- [ ] Abstract Classes\n- [ ] Singleton Class\n- [ ] final, finalize, finally\n- [ ] Exception Handling\n\n## Linked List\n\n- [ ] Introduction\n- [ ] Singly and Doubly Linked List\n- [ ] Circular Linked List\n- [ ] Fast and slow pointer\n- [ ] Cycle Detection\n- [ ] Reversing of LinkedList\n- [ ] Linked List Interview questions\n\n## Stacks \u0026 Queues\n\n- [ ] Introduction\n- [ ] Interview problems\n- [ ] Push efficient\n- [ ] Pop efficient\n- [ ] Queue using Stack and Vice versa\n- [ ] Circular Queue\n\n## Dynamic Programming\n\n- [ ] Introduction\n- [ ] Recursion + Recursion DP + Iteration + Iteration Space Optimized\n- [ ] Complexity Analysis\n- [ ] 0/1 Knapsack\n- [ ] Subset Questions\n- [ ] Unbounded Knapsack\n- [ ] Subseq questions\n- [ ] String DP\n\n## Hashmaps\n\n- [ ] Introduction\n- [ ] Theory - how it works\n- [ ] Comparisons of various forms\n- [ ] Limitations and how to solve\n- [ ] Map using LinkedList\n- [ ] Map using Hash\n- [ ] Chaining\n- [ ] Probing\n- [ ] Huffman-Encoder\n\n## Trees\n\n- [ ] Introduction\n- [ ] Binary Trees\n- [ ] Binary Search Trees\n- [ ] DFS\n- [ ] BFS\n- [ ] AVL Trees\n- [ ] Segment Tree\n- [ ] Fenwick Tree / Binary Indexed Tree\n\n## Heaps\n\n- [ ] Introduction\n- [ ] Theory\n- [ ] Priority Queue\n- [ ] Two Heaps Method\n- [ ] k-way merge\n- [ ] top k elements\n- [ ] interval problems\n\n## Tries\n\n- [ ] Introduction\n\n## Graphs\n\n- [ ] Introduction\n- [ ] BFS\n- [ ] DFS\n- [ ] Working with graph components\n- [ ] Minimum Spanning Trees\n- [ ] Kruskal Algorithm\n- [ ] Prims Algorithm\n- [ ] Dijkstra’s shortest path algorithm\n- [ ] Topological Sort\n- [ ] Bellman ford\n- [ ] A\\* pathfinding Algorithm\n\n## Greedy Algorithms\n\n- [ ] Introduction\n\n## Advanced concepts apart from interviews\n\n- [ ] Fast IO\n- [ ] File handling\n- [ ] Bitwise + DP\n- [ ] Extended Euclidean algorithm\n- [ ] Modulo Multiplicative Inverse\n- [ ] Linear Diophantine Equations\n- [ ] Matrix Exponentiation\n- [ ] Mathematical Expectation\n- [ ] Catalan Numbers\n- [ ] Fermat’s Theorem\n- [ ] Wilson's Theorem\n- [ ] Euler's Theorem\n- [ ] Lucas Theorem\n- [ ] Chinese Remainder Theorem\n- [ ] Euler Totient\n- [ ] NP-Completeness\n- [ ] Multithreading\n- [ ] Fenwick Tree / Binary Indexed Tree\n- [ ] Square Root Decomposition\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonalbarse%2Fdsa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmonalbarse%2Fdsa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonalbarse%2Fdsa/lists"}