Skip to content

Commit 89cad51

Browse files
committed
Add automated DSA progress tracking
1 parent 25d7a2d commit 89cad51

5 files changed

Lines changed: 218 additions & 63 deletions

File tree

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Update Progress
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: write
11+
12+
jobs:
13+
update-progress:
14+
if: github.actor != 'github-actions[bot]'
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- name: Check out repository
19+
uses: actions/checkout@v4
20+
21+
- name: Set up Python
22+
uses: actions/setup-python@v5
23+
with:
24+
python-version: "3.x"
25+
26+
- name: Refresh README progress
27+
run: python3 scripts/update_progress.py
28+
29+
- name: Commit README updates
30+
run: |
31+
if git diff --quiet -- README.md; then
32+
echo "No README changes to commit."
33+
exit 0
34+
fi
35+
git config user.name "github-actions[bot]"
36+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
37+
git add README.md
38+
git commit -m "Update DSA progress"
39+
git push

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
__pycache__/
2+
*.pyc

README.md

Lines changed: 25 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,39 @@
11
# LeetCode Solutions and Interview Prep
22

3-
This repository tracks my data structures and algorithms practice for technical interview preparation.
3+
This repository is my long-term DSA and interview prep workspace. Accepted solutions are synced from LeetCode through `LeetSync`, and the tracked sheet progress in this README is refreshed automatically from the synced problem folders and files.
44

5-
The plan is simple:
5+
## Profiles
6+
7+
- NeetCode: [sushildalavi](https://neetcode.io/profile/sushildalavi)
8+
- LeetCode: _Add your public LeetCode profile URL here_
9+
10+
## Prep Roadmap
611

712
1. Finish `NeetCode 150`
813
2. Move to `NeetCode 250`
914
3. Complete `Striver's SDE Sheet`
10-
4. Continue with regular LeetCode and DSA practice for revision, speed, and pattern recognition
11-
12-
Solutions in this repository are synced from LeetCode using `LeetSync`, so this repo serves as both a progress log and a long-term archive of interview prep work.
13-
14-
## Roadmap
15-
16-
| Phase | Track | Focus | Status |
17-
| --- | --- | --- | --- |
18-
| 1 | NeetCode 150 | Core interview patterns and must-know problems | In Progress |
19-
| 2 | NeetCode 250 | Wider medium and hard problem coverage | Planned |
20-
| 3 | Striver's SDE Sheet | Structured revision across core DSA topics | Planned |
21-
| 4 | Mixed Practice | Timed practice, weak-topic review, and consistency | Ongoing |
22-
23-
## Goals
24-
25-
- Build strong problem-solving fundamentals in DSA
26-
- Improve pattern recognition across common interview problem types
27-
- Write clean, efficient, interview-ready solutions
28-
- Track progress consistently over time
29-
- Create a reusable revision resource before interviews
30-
31-
## What This Repository Will Contain
32-
33-
- LeetCode problem solutions synced through `LeetSync`
34-
- Consistent practice across arrays, strings, linked lists, trees, graphs, dynamic programming, heaps, backtracking, and more
35-
- A growing archive of solved problems for revision
36-
- Progress tied to structured interview prep sheets rather than random practice
37-
38-
## Current Prep Order
39-
40-
`NeetCode 150` -> `NeetCode 250` -> `Striver's SDE Sheet` -> `Ongoing DSA Practice`
41-
42-
## Problem-Solving Approach
43-
44-
For each problem, the focus is to:
45-
46-
1. Understand the brute-force solution first
47-
2. Identify the optimal pattern or data structure
48-
3. Implement a clean and readable solution
49-
4. Review time and space complexity
50-
5. Revisit difficult problems until the pattern becomes natural
51-
52-
## Progress Tracker
53-
54-
- NeetCode 150: `0 / 150`
55-
- NeetCode 250: `0 / 250`
56-
- Striver's SDE Sheet: `Not started`
57-
58-
This section will be updated as the repository grows.
15+
4. Continue with regular DSA practice for revision, speed, and pattern recognition
5916

60-
## Why This Repo Exists
17+
## Progress
6118

62-
This is not just a dump of accepted submissions. The goal is to build a disciplined interview prep system:
19+
<!-- progress:begin -->
20+
| Track | Solved | Total | Progress |
21+
| --- | ---: | ---: | ---: |
22+
| NeetCode 150 | 0 | 150 | 0.0% |
23+
| NeetCode 250 | 0 | 250 | 0.0% |
24+
| Striver's SDE Sheet (LeetCode-backed) | 0 | 117 | 0.0% |
6325

64-
- solve consistently
65-
- track progress publicly
66-
- revise weak areas
67-
- maintain a personal archive of patterns and solutions
26+
Tracked unique problems solved across all sheets: `0 / 293`
27+
<!-- progress:end -->
6828

69-
## Tools
29+
## How This Repo Updates
7030

71-
- `LeetCode`
72-
- `LeetSync`
73-
- `GitHub`
31+
- Solve on `LeetCode`
32+
- Let `LeetSync` push the accepted submission into this repository
33+
- The `Update Progress` GitHub Action scans the synced solution names and refreshes the progress table in this README
7434

75-
## Long-Term Objective
35+
## Notes
7636

77-
Use this repository as a structured record of interview preparation and a revision base for software engineering interviews.
37+
- `NeetCode 150` is a subset of `NeetCode 250`, so those counts intentionally overlap
38+
- `Striver's SDE Sheet` tracking only covers the LeetCode-backed problems from the official sheet
39+
- If a Striver problem is not solved on LeetCode, `LeetSync` cannot sync it into this repository

data/tracks.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"neetcode150": ["contains-duplicate", "valid-anagram", "two-sum", "group-anagrams", "top-k-frequent-elements", "encode-and-decode-strings", "product-of-array-except-self", "valid-sudoku", "longest-consecutive-sequence", "valid-palindrome", "two-sum-ii-input-array-is-sorted", "3sum", "container-with-most-water", "trapping-rain-water", "best-time-to-buy-and-sell-stock", "longest-substring-without-repeating-characters", "longest-repeating-character-replacement", "permutation-in-string", "minimum-window-substring", "sliding-window-maximum", "valid-parentheses", "min-stack", "evaluate-reverse-polish-notation", "daily-temperatures", "car-fleet", "largest-rectangle-in-histogram", "binary-search", "search-a-2d-matrix", "koko-eating-bananas", "find-minimum-in-rotated-sorted-array", "search-in-rotated-sorted-array", "time-based-key-value-store", "median-of-two-sorted-arrays", "reverse-linked-list", "merge-two-sorted-lists", "linked-list-cycle", "reorder-list", "remove-nth-node-from-end-of-list", "copy-list-with-random-pointer", "add-two-numbers", "find-the-duplicate-number", "lru-cache", "merge-k-sorted-lists", "reverse-nodes-in-k-group", "invert-binary-tree", "maximum-depth-of-binary-tree", "diameter-of-binary-tree", "balanced-binary-tree", "same-tree", "subtree-of-another-tree", "lowest-common-ancestor-of-a-binary-search-tree", "binary-tree-level-order-traversal", "binary-tree-right-side-view", "count-good-nodes-in-binary-tree", "validate-binary-search-tree", "kth-smallest-element-in-a-bst", "construct-binary-tree-from-preorder-and-inorder-traversal", "binary-tree-maximum-path-sum", "serialize-and-deserialize-binary-tree", "kth-largest-element-in-a-stream", "last-stone-weight", "k-closest-points-to-origin", "kth-largest-element-in-an-array", "task-scheduler", "design-twitter", "find-median-from-data-stream", "subsets", "combination-sum", "combination-sum-ii", "permutations", "subsets-ii", "generate-parentheses", "word-search", "palindrome-partitioning", "letter-combinations-of-a-phone-number", "n-queens", "implement-trie-prefix-tree", "design-add-and-search-words-data-structure", "word-search-ii", "number-of-islands", "max-area-of-island", "clone-graph", "walls-and-gates", "rotting-oranges", "pacific-atlantic-water-flow", "surrounded-regions", "course-schedule", "course-schedule-ii", "graph-valid-tree", "number-of-connected-components-in-an-undirected-graph", "redundant-connection", "word-ladder", "network-delay-time", "reconstruct-itinerary", "min-cost-to-connect-all-points", "swim-in-rising-water", "alien-dictionary", "cheapest-flights-within-k-stops", "climbing-stairs", "min-cost-climbing-stairs", "house-robber", "house-robber-ii", "longest-palindromic-substring", "palindromic-substrings", "decode-ways", "coin-change", "maximum-product-subarray", "word-break", "longest-increasing-subsequence", "partition-equal-subset-sum", "unique-paths", "longest-common-subsequence", "best-time-to-buy-and-sell-stock-with-cooldown", "coin-change-ii", "target-sum", "interleaving-string", "longest-increasing-path-in-a-matrix", "distinct-subsequences", "edit-distance", "burst-balloons", "regular-expression-matching", "maximum-subarray", "jump-game", "jump-game-ii", "gas-station", "hand-of-straights", "merge-triplets-to-form-target-triplet", "partition-labels", "valid-parenthesis-string", "insert-interval", "merge-intervals", "non-overlapping-intervals", "meeting-rooms", "meeting-rooms-ii", "minimum-interval-to-include-each-query", "rotate-image", "spiral-matrix", "set-matrix-zeroes", "happy-number", "plus-one", "powx-n", "multiply-strings", "detect-squares", "single-number", "number-of-1-bits", "counting-bits", "reverse-bits", "missing-number", "sum-of-two-integers", "reverse-integer"],
3+
"neetcode250": ["concatenation-of-array", "contains-duplicate", "valid-anagram", "two-sum", "longest-common-prefix", "group-anagrams", "remove-element", "majority-element", "design-hashset", "design-hashmap", "sort-an-array", "sort-colors", "top-k-frequent-elements", "encode-and-decode-strings", "range-sum-query-2d-immutable", "product-of-array-except-self", "valid-sudoku", "longest-consecutive-sequence", "best-time-to-buy-and-sell-stock-ii", "majority-element-ii", "subarray-sum-equals-k", "first-missing-positive", "reverse-string", "valid-palindrome", "valid-palindrome-ii", "merge-strings-alternately", "merge-sorted-array", "remove-duplicates-from-sorted-array", "two-sum-ii-input-array-is-sorted", "3sum", "4sum", "rotate-array", "container-with-most-water", "boats-to-save-people", "trapping-rain-water", "contains-duplicate-ii", "best-time-to-buy-and-sell-stock", "longest-substring-without-repeating-characters", "longest-repeating-character-replacement", "permutation-in-string", "minimum-size-subarray-sum", "find-k-closest-elements", "minimum-window-substring", "sliding-window-maximum", "baseball-game", "valid-parentheses", "implement-stack-using-queues", "implement-queue-using-stacks", "min-stack", "evaluate-reverse-polish-notation", "asteroid-collision", "daily-temperatures", "online-stock-span", "car-fleet", "simplify-path", "decode-string", "maximum-frequency-stack", "largest-rectangle-in-histogram", "binary-search", "search-insert-position", "guess-number-higher-or-lower", "sqrtx", "search-a-2d-matrix", "koko-eating-bananas", "capacity-to-ship-packages-within-d-days", "find-minimum-in-rotated-sorted-array", "search-in-rotated-sorted-array", "search-in-rotated-sorted-array-ii", "time-based-key-value-store", "split-array-largest-sum", "median-of-two-sorted-arrays", "find-in-mountain-array", "reverse-linked-list", "merge-two-sorted-lists", "linked-list-cycle", "reorder-list", "remove-nth-node-from-end-of-list", "copy-list-with-random-pointer", "add-two-numbers", "find-the-duplicate-number", "reverse-linked-list-ii", "design-circular-queue", "lru-cache", "lfu-cache", "merge-k-sorted-lists", "reverse-nodes-in-k-group", "binary-tree-inorder-traversal", "binary-tree-preorder-traversal", "binary-tree-postorder-traversal", "invert-binary-tree", "maximum-depth-of-binary-tree", "diameter-of-binary-tree", "balanced-binary-tree", "same-tree", "subtree-of-another-tree", "lowest-common-ancestor-of-a-binary-search-tree", "insert-into-a-binary-search-tree", "delete-node-in-a-bst", "binary-tree-level-order-traversal", "binary-tree-right-side-view", "construct-quad-tree", "count-good-nodes-in-binary-tree", "validate-binary-search-tree", "kth-smallest-element-in-a-bst", "construct-binary-tree-from-preorder-and-inorder-traversal", "house-robber-iii", "delete-leaves-with-a-given-value", "binary-tree-maximum-path-sum", "serialize-and-deserialize-binary-tree", "kth-largest-element-in-a-stream", "last-stone-weight", "k-closest-points-to-origin", "kth-largest-element-in-an-array", "task-scheduler", "design-twitter", "single-threaded-cpu", "reorganize-string", "longest-happy-string", "car-pooling", "find-median-from-data-stream", "ipo", "sum-of-all-subset-xor-totals", "subsets", "combination-sum", "combination-sum-ii", "combinations", "permutations", "subsets-ii", "permutations-ii", "generate-parentheses", "word-search", "palindrome-partitioning", "letter-combinations-of-a-phone-number", "matchsticks-to-square", "partition-to-k-equal-sum-subsets", "n-queens", "n-queens-ii", "word-break-ii", "implement-trie-prefix-tree", "design-add-and-search-words-data-structure", "extra-characters-in-a-string", "word-search-ii", "island-perimeter", "verifying-an-alien-dictionary", "find-the-town-judge", "number-of-islands", "max-area-of-island", "clone-graph", "walls-and-gates", "rotting-oranges", "pacific-atlantic-water-flow", "surrounded-regions", "open-the-lock", "course-schedule", "course-schedule-ii", "graph-valid-tree", "course-schedule-iv", "number-of-connected-components-in-an-undirected-graph", "redundant-connection", "accounts-merge", "evaluate-division", "minimum-height-trees", "word-ladder", "path-with-minimum-effort", "network-delay-time", "reconstruct-itinerary", "min-cost-to-connect-all-points", "swim-in-rising-water", "alien-dictionary", "cheapest-flights-within-k-stops", "find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree", "build-a-matrix-with-conditions", "greatest-common-divisor-traversal", "climbing-stairs", "min-cost-climbing-stairs", "n-th-tribonacci-number", "house-robber", "house-robber-ii", "longest-palindromic-substring", "palindromic-substrings", "decode-ways", "coin-change", "maximum-product-subarray", "word-break", "longest-increasing-subsequence", "partition-equal-subset-sum", "combination-sum-iv", "perfect-squares", "integer-break", "stone-game-iii", "unique-paths", "unique-paths-ii", "minimum-path-sum", "longest-common-subsequence", "last-stone-weight-ii", "best-time-to-buy-and-sell-stock-with-cooldown", "coin-change-ii", "target-sum", "interleaving-string", "stone-game", "stone-game-ii", "longest-increasing-path-in-a-matrix", "distinct-subsequences", "edit-distance", "burst-balloons", "regular-expression-matching", "lemonade-change", "maximum-subarray", "maximum-sum-circular-subarray", "longest-turbulent-subarray", "jump-game", "jump-game-ii", "jump-game-vii", "gas-station", "hand-of-straights", "dota2-senate", "merge-triplets-to-form-target-triplet", "partition-labels", "valid-parenthesis-string", "candy", "insert-interval", "merge-intervals", "non-overlapping-intervals", "meeting-rooms", "meeting-rooms-ii", "meeting-rooms-iii", "minimum-interval-to-include-each-query", "excel-sheet-column-title", "greatest-common-divisor-of-strings", "insert-greatest-common-divisors-in-linked-list", "transpose-matrix", "rotate-image", "spiral-matrix", "set-matrix-zeroes", "happy-number", "plus-one", "roman-to-integer", "powx-n", "multiply-strings", "detect-squares", "single-number", "number-of-1-bits", "counting-bits", "add-binary", "reverse-bits", "missing-number", "sum-of-two-integers", "reverse-integer", "bitwise-and-of-numbers-range", "minimum-array-end"],
4+
"striverSdeSheetLeetCode": ["3sum", "4sum", "add-two-numbers", "assign-cookies", "balanced-binary-tree", "best-time-to-buy-and-sell-stock", "binary-search-tree-iterator", "binary-tree-inorder-traversal", "binary-tree-level-order-traversal", "binary-tree-maximum-path-sum", "binary-tree-postorder-traversal", "binary-tree-preorder-traversal", "binary-tree-right-side-view", "binary-tree-zigzag-level-order-traversal", "boundary-of-binary-tree", "clone-graph", "coin-change", "coin-change-2", "combination-sum", "combination-sum-ii", "compare-version-numbers", "construct-binary-search-tree-from-preorder-traversal", "construct-binary-tree-from-inorder-and-postorder-traversal", "construct-binary-tree-from-preorder-and-inorder-traversal", "convert-sorted-array-to-binary-search-tree", "copy-list-with-random-pointer", "count-and-say", "course-schedule", "delete-node-in-a-linked-list", "diameter-of-binary-tree", "edit-distance", "find-median-from-data-stream", "find-the-duplicate-number", "flatten-binary-tree-to-linked-list", "flood-fill", "implement-queue-using-stacks", "implement-stack-using-queues", "implement-strstr", "implement-trie-prefix-tree", "inorder-successor-in-bst", "intersection-of-two-linked-lists", "is-graph-bipartite", "kth-largest-element-in-a-stream", "kth-largest-element-in-an-array", "kth-smallest-element-in-a-bst", "largest-rectangle-in-histogram", "lfu-cache", "linked-list-cycle", "linked-list-cycle-ii", "longest-common-prefix", "longest-consecutive-sequence", "longest-palindromic-substring", "longest-substring-without-repeating-characters", "lowest-common-ancestor-of-a-binary-search-tree", "lowest-common-ancestor-of-a-binary-tree", "majority-element", "majority-element-ii", "max-consecutive-ones", "maximum-depth-of-binary-tree", "maximum-number-of-non-overlapping-substrings", "maximum-product-subarray", "maximum-sum-bst-in-binary-tree", "maximum-width-of-binary-tree", "maximum-xor-of-two-numbers-in-an-array", "maximum-xor-with-an-element-from-array", "median-of-two-sorted-arrays", "merge-intervals", "merge-sorted-array", "merge-two-sorted-lists", "middle-of-the-linked-list", "min-stack", "minimum-insertion-steps-to-make-a-string-palindrome", "minimum-path-sum", "n-queens", "next-greater-element-i", "next-permutation", "number-of-islands", "online-stock-span", "palindrome-linked-list", "pascals-triangle", "permutation-sequence", "permutations", "populating-next-right-pointers-in-each-node", "powx-n", "remove-duplicates-from-sorted-array", "remove-nth-node-from-end-of-list", "repeated-string-match", "reverse-linked-list", "reverse-nodes-in-k-group", "reverse-pairs", "reverse-words-in-a-string", "roman-to-integer", "rotate-image", "rotate-list", "rotting-oranges", "same-tree", "search-a-2d-matrix", "search-in-a-binary-search-tree", "search-in-rotated-sorted-array", "serialize-and-deserialize-binary-tree", "set-matrix-zeroes", "single-element-in-a-sorted-array", "sliding-window-maximum", "sort-colors", "string-to-integer-atoi", "subsets-ii", "sudoku-solver", "symmetric-tree", "top-k-frequent-elements", "trapping-rain-water", "two-sum", "two-sum-iv-input-is-a-bst", "unique-paths", "valid-anagram", "valid-parentheses", "validate-binary-search-tree", "vertical-order-traversal-of-a-binary-tree"]
5+
}

0 commit comments

Comments
 (0)