Skip to content

A Java-focused repository to master algorithms, data structures, and problem-solving techniques. Ideal for coding interview preparation and competitive programming challenges.

Notifications You must be signed in to change notification settings

crisnguyendev/problem-solving-practice-java

Repository files navigation

Problem Solving Practice Repository

Welcome to my Problem Solving Practice repository! πŸ‘‹

πŸš€ About This Repository

This repository is dedicated to improving my problem-solving skills using Java. It focuses on mastering algorithms and data structures through hands-on practice and challenges.

Problems are sourced from platforms like Codeforces and LeetCode, as well as structured courses for systematic learning.

🎯 Goals

  • Strengthen algorithmic thinking and coding proficiency.
  • Prepare for coding interviews with comprehensive practice.
  • Build efficient and optimized solutions to challenging problems.

πŸ“š Topics Covered

Arrays and Strings

  • Sliding Window
  • Two Pointers
  • Fast and Slow Pointers
  • Sorting Algorithms
  • Searching Algorithms
  • Prefix Sum

Linked Lists and Stacks

  • In-place Reversal of a Linked List
  • Linked Lists
  • Stacks and Queues
  • Queues and Deques

Trees and Graphs

  • Tree Breadth-First Search
  • Tree Depth-First Search
  • Topological Sort (Graph)
  • Graph Basics and Traversals
  • Graph Algorithms (DFS, BFS, Dijkstra's, Floyd-Warshall)

Dynamic Programming

  • 0/1 Knapsack
  • Longest Common Substring
  • Advanced Dynamic Programming
  • Bitwise XOR
  • Subsets

Greedy Algorithms

  • Merge Intervals
  • Cyclic Sort
  • Greedy Strategies

Divide and Conquer

  • Modified Binary Search

Advanced Topics

  • Two Heaps (Priority Queues)
  • K-way Merge
  • Trie (Prefix Tree)
  • Segment Trees and Fenwick Trees
  • Disjoint Set Union (Union-Find)
  • Computational Geometry
  • Number Theory
  • String Matching Algorithms (KMP, Rabin-Karp, Z-Algorithm)
  • Bit Manipulation Techniques

πŸ“‚ Project Structure

root/
  β”œβ”€β”€ DSA/                        # Practice by topics (Leetcode & Codeforces)
  β”‚   β”œβ”€β”€ arrays_and_strings/
  β”‚   β”œβ”€β”€ linked_lists_and_stacks/
  β”‚   β”œβ”€β”€ trees_and_graphs/
  β”‚   β”œβ”€β”€ dynamic_programming/
  β”‚   β”œβ”€β”€ greedy_algorithms/
  β”‚   β”œβ”€β”€ divide_and_conquer/
  β”‚   β”œβ”€β”€ advanced_topics/
  β”‚   └── utils/
  β”œβ”€β”€ Leetcode/                   # Practice by Contests and Study Plans
  β”‚   β”œβ”€β”€ contests/
  β”‚   β”œβ”€β”€ study_plans/
  β”œβ”€β”€ test/
  β”‚   β”œβ”€β”€ DSA/
  β”‚   β”œβ”€β”€ Leetcode/
  β”œβ”€β”€ README.md
  β”œβ”€β”€ .gitignore
  β”œβ”€β”€ pom.xml
  β”œβ”€β”€ build.gradle
  β”œβ”€β”€ LICENSE

Feel free to explore the repository and contribute your suggestions or solutions! πŸš€

About

A Java-focused repository to master algorithms, data structures, and problem-solving techniques. Ideal for coding interview preparation and competitive programming challenges.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages