Skip to content

Useful data structure study and algorithms implemented with python, practing for technical interviews, live coding and leet problems

Notifications You must be signed in to change notification settings

jonriber/DSA-Data-Structures-and-Algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data-algo-python

Useful data structure study and algorithms implemented with python, practing for technical interviews, live coding and leet problems Also, leet code preparation road map, around 8-12 weeks long.

  • Two-pointer technique
  • Sliding window
  • Fast and slow pointers
  • Tree traversal
  • Depth-first search (DFS)
  • Binary search
  • Dynamic programming

Phase 1: Foundations (1-2 weeks)

Goal: Familiarize yourself with common data structures and algorithms, and solve easy-level questions to build confidence.

1- Review Core Concepts:

  • Arrays & Strings: Basics of iteration, manipulation, and string operations.
  • Hash Maps & Sets: Learn how to solve problems using these for faster lookups.
  • Sorting: Learn basic sorting algorithms and when to use them.
  • Time Complexity: Understand Big O notation and analyze solutions.

2- Practice Topics:

  • Arrays & Strings: Easy questions (e.g., Two Sum, Best Time to Buy and Sell Stock)
  • Hash Maps: Practice frequent problems (e.g., Contains Duplicate, Valid Anagram)
  • Sorting: Learn and apply basic algorithms like quicksort or mergesort.
  • Goal: Solve at least 10-15 easy questions per topic.

Phase 2: Intermediate Mastery (2-3 weeks)

Goal: Move to intermediate-level questions focusing on the most common algorithms asked in interviews.

1- Core Topics to Focus On:

  • Binary Search: Learn how to apply it in sorted data (e.g., Search Insert Position).
  • Linked Lists: Practice operations on singly and doubly linked lists (e.g., Reverse Linked List).
  • Stacks & Queues: Use these data structures for questions involving sequence (e.g., Valid Parentheses, Min Stack).
  • Binary Trees & BST: Familiarize yourself with traversals, depth-first and breadth-first searches.
  • Recursion & Backtracking: Solve problems like permutations and combinations (e.g., Subsets, Combination Sum).

2- Practice Strategy:

  • Start by learning the theory, then solve 5-10 questions on each topic.
  • Review solutions and understand different approaches (e.g., iterative vs. recursive).

Phase 3: Advanced Topics (3-4 weeks)

Goal: Focus on harder and more complex problem-solving skills, including optimization.

1- Key Advanced Topics:

  • Dynamic Programming: Solve questions that involve memoization (e.g., Climbing Stairs, Coin Change).
  • Graphs: Practice BFS/DFS and shortest path algorithms (e.g., Course Schedule, Number of Islands).
  • Heap & Priority Queues: Understand heap operations and use them in questions (e.g., Kth Largest Element).
  • Advanced Trees & Tries: Practice problems involving more complex tree structures.
  • Greedy Algorithms: Solve questions where locally optimal choices lead to the global optimum (e.g., Jump Game, Gas Station).

2- Practice Strategy:

  • Spend extra time reviewing dynamic programming problems, as these are common in interviews.
  • Solve at least 5-10 questions per advanced topic.

Phase 4: Mock Interviews & Timed Practice (2-3 weeks)

Goal: Simulate interview conditions by solving problems in a timed environment.

1- Simulate Interviews:

  • Pick random medium and hard problems and try to solve them within 30-45 minutes.
  • Focus on verbalizing your thought process, as you would in an actual interview.
  • Use mock interview platforms or ask a friend to conduct mock interviews with you.

2- Topic Revision:

  • Target Weak Areas: Revisit the questions or topics where you struggled the most.
  • Mixed Practice: Do random LeetCode questions to simulate real interview randomness.
  • LeetCode Contests: Participate in LeetCode Weekly Contests for more variety and pressure handling.

Phase 5: Final Week (1 week)

Goal: Strengthen your confidence and optimize speed before the interview.

1- Daily Problem Solving:

  • Solve a mixture of easy, medium, and hard problems.
  • Focus on efficiency and correctness.
  • Do some pair programming to get used to coding with someone watching.

2- System Design & Behavioral Practice:

  • If applying for senior roles, start reviewing system design concepts.
  • Also, practice answering behavioral questions and explaining the thought process for algorithmic problems.

DSA and leer code peoblems

About

Useful data structure study and algorithms implemented with python, practing for technical interviews, live coding and leet problems

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published