Skip to content

Latest commit

 

History

History
128 lines (102 loc) · 5.47 KB

File metadata and controls

128 lines (102 loc) · 5.47 KB

STS3007: Advanced Competitive Coding - I

Welcome to the STS3007: Advanced Competitive Coding - I repository!
This repository contains a variety of Java implementations of advanced algorithms, problem-solving techniques, and theory materials. These resources are designed to help students and developers enhance their competitive programming skills.


📂 Repository Structure

The repository includes the following files:

📄 Java Programs

Java implementations of various algorithms and problem-solving techniques:

  1. ActivitySelection.java: Greedy algorithm to select the maximum number of non-overlapping activities.
  2. Binary_Palindrome.java: Checks if a binary number is a palindrome.
  3. BlockSwap.java: Efficient array rotation using block swap.
  4. Booth_Multiplication.java: Booth's algorithm for binary multiplication.
  5. CRT.java: Solves systems of congruences using the Chinese Remainder Theorem.
  6. Combinations.java: Generates combinations of elements from a set.
  7. Euclid.java: Calculates the GCD of two numbers using Euclid's algorithm.
  8. EulerPhi.java: Computes Euler's Totient Function for a given number.
  9. HourGlass.java: Finds the maximum hourglass sum in a 2D array.
  10. Incremental_Sieve.java: Generates primes using an incremental sieve approach.
  11. Josephus.java: Solves the Josephus problem recursively and iteratively.
  12. Karatsuba.java: Implements the Karatsuba algorithm for fast multiplication.
  13. Leaders.java: Finds all leaders in an array.
  14. LongestPalindromicSubstring.java: Finds the longest palindromic substring in a string.
  15. Majority.java: Identifies the majority element in an array.
  16. Maneuvering.java: A problem-solving approach involving array manipulations.
  17. Max1.java: Finds the maximum consecutive 1s in a binary array.
  18. MaxE.java: Finds the maximum equilibrium sum in an array.
  19. MaxP.java: Finds the maximum product subarray.
  20. MazeSolver.java: Solves a maze using backtracking.
  21. MoveHyphens.java: Moves all hyphens to the end of a string.
  22. NQueens.java: Backtracking solution for the N-Queens problem.
  23. Palindrome1.java: Finds lexicographically first palindromic string.
  24. Permutations.java: Generates all sorted & unique permutations of a given array .
  25. QuickSort.java: Implements the quicksort algorithm.
  26. Segmented_Sieve.java: Finds primes in a given range using the segmented sieve method.
  27. SelectionSort.java: Implements the selection sort algorithm.
  28. Simple_Sieve.java: Generates primes using the simple sieve method.
  29. Strobogrammatic1.java: Verifies if a number looks the same upside down.
  30. Strobogrammatic2.java: Generates all strobogrammatic numbers within a range.
  31. SwapNibbles.java: Swaps nibbles in a byte.
  32. WeightedSubstring.java: Finds substrings with given weight constraints.

📑 Study Materials


📋 Topics Covered

This repository covers a wide range of topics, including:

  • Sorting and Searching Algorithms (e.g., QuickSort, SelectionSort)
  • Mathematical Algorithms (e.g., Euclid's Algorithm, Sieve of Eratosthenes, CRT)
  • String Manipulation (e.g., Longest Palindromic Substring, Binary Palindrome)
  • Backtracking (e.g., N-Queens, Maze Solver, Permutations)
  • Greedy Algorithms (e.g., Activity Selection, Leaders in Array)
  • Advanced Multiplication Techniques (e.g., Karatsuba, Booth's Algorithm)
  • Problem-Solving Strategies (e.g., Hourglass Sum, Josephus Problem, Max Product Subarray)

🖥 How to Run

Follow these steps to run the programs:

Prerequisites

Steps

  1. Clone this repository:
    git clone https://github.com/Jain131102/STS3007---Advanced-Competitive-Coding---I.git
  2. Navigate to the repository:
    cd STS3007---Advanced-Competitive-Coding---I
  3. Compile and run any Java program:
     javac ProgramName.java  
     java ProgramName  

🤝 Contributing

Contributions are welcome! If you'd like to add solutions, fix bugs, or improve documentation:

  1. Fork the repository.
  2. Create a new branch:
git checkout -b feature-branch-name  
  1. Commit your changes:
git commit -m "Add your message here"  
  1. Push to your branch:
git push origin feature-branch-name  

5.Open a pull request.


🌟 Acknowledgments

Thanks to all contributors and learners for supporting this project!
Happy Coding! 🚀

🛡 License

This project is open-source and available under the MIT License.