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.
The repository includes the following files:
Java implementations of various algorithms and problem-solving techniques:
- ActivitySelection.java: Greedy algorithm to select the maximum number of non-overlapping activities.
- Binary_Palindrome.java: Checks if a binary number is a palindrome.
- BlockSwap.java: Efficient array rotation using block swap.
- Booth_Multiplication.java: Booth's algorithm for binary multiplication.
- CRT.java: Solves systems of congruences using the Chinese Remainder Theorem.
- Combinations.java: Generates combinations of elements from a set.
- Euclid.java: Calculates the GCD of two numbers using Euclid's algorithm.
- EulerPhi.java: Computes Euler's Totient Function for a given number.
- HourGlass.java: Finds the maximum hourglass sum in a 2D array.
- Incremental_Sieve.java: Generates primes using an incremental sieve approach.
- Josephus.java: Solves the Josephus problem recursively and iteratively.
- Karatsuba.java: Implements the Karatsuba algorithm for fast multiplication.
- Leaders.java: Finds all leaders in an array.
- LongestPalindromicSubstring.java: Finds the longest palindromic substring in a string.
- Majority.java: Identifies the majority element in an array.
- Maneuvering.java: A problem-solving approach involving array manipulations.
- Max1.java: Finds the maximum consecutive 1s in a binary array.
- MaxE.java: Finds the maximum equilibrium sum in an array.
- MaxP.java: Finds the maximum product subarray.
- MazeSolver.java: Solves a maze using backtracking.
- MoveHyphens.java: Moves all hyphens to the end of a string.
- NQueens.java: Backtracking solution for the N-Queens problem.
- Palindrome1.java: Finds lexicographically first palindromic string.
- Permutations.java: Generates all sorted & unique permutations of a given array .
- QuickSort.java: Implements the quicksort algorithm.
- Segmented_Sieve.java: Finds primes in a given range using the segmented sieve method.
- SelectionSort.java: Implements the selection sort algorithm.
- Simple_Sieve.java: Generates primes using the simple sieve method.
- Strobogrammatic1.java: Verifies if a number looks the same upside down.
- Strobogrammatic2.java: Generates all strobogrammatic numbers within a range.
- SwapNibbles.java: Swaps nibbles in a byte.
- WeightedSubstring.java: Finds substrings with given weight constraints.
- MCQs (STS3007 - Advanced Competitive Coding - I).pdf: Multiple-choice questions for self-assessment.
- MCQs PPT (STS3007 - Advanced Competitive Coding - I).pdf: Presentation slides for MCQs.
- Theory 1 (STS3007 - Advanced Competitive Coding - I).pdf: Detailed theory notes on various algorithms and techniques.
- Theory 2 (STS3007 - Advanced Competitive Coding - I).pdf: Additional notes covering advanced topics.
- YouTube Lectures
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)
Follow these steps to run the programs:
- Ensure you have Java installed. Download Java.
- Clone this repository:
git clone https://github.com/Jain131102/STS3007---Advanced-Competitive-Coding---I.git
- Navigate to the repository:
cd STS3007---Advanced-Competitive-Coding---I
- Compile and run any Java program:
javac ProgramName.java java ProgramName
Contributions are welcome! If you'd like to add solutions, fix bugs, or improve documentation:
- Fork the repository.
- Create a new branch:
git checkout -b feature-branch-name
- Commit your changes:
git commit -m "Add your message here"
- Push to your branch:
git push origin feature-branch-name
5.Open a pull request.
This project is open-source and available under the MIT License.