DSA KIT

Pub Version License: MIT Dart

A scalable Data Structures & Algorithms toolkit for Dart, designed to make competitive programming, interview preparation, and algorithmic problem-solving more accessible in the Dart ecosystem.

🎯 Why dsa_kit?

When working with Dart, you might notice that while its core libraries are powerful, they don’t provide many of the classic data structures (like heaps, deques, or specialized queues) that are common in languages such as Python (heapq, collections.deque) or Java (PriorityQueue, LinkedList).

This is where dsa_kit comes in. It’s designed to give you the building blocks you need for problem-solving, algorithm practice, and production systems:

  • πŸ—οΈ Well-structured & SOLID – clean, maintainable, and extensible implementations.

  • πŸ§ͺ Battle-tested – backed by strong unit tests to ensure reliability.

  • πŸ“š Beginner-friendly – readable code and examples for learning and interviews.

  • ⚑ Optimized for performance – suitable for competitive programming and high-throughput apps.

  • πŸš€ Practical & ready-to-use – fills the gap between Dart’s core libraries and real-world problem-solving needs.

πŸš€ Quick Start

Add dsa_kit to your pubspec.yaml:

dependencies:
  dsa_kit: <latest-version>

Run:

dart pub get

πŸ“¦ Available Data Structures

Data Structure Variants / Implementations Key Features Example Use Cases
Heap - MinHeap<T>
- MaxHeap<T>
- Priority-based ordering
- push, pop, peek
- Works with Comparable and custom objects
- Priority Queues
- Find k-th smallest/largest
- Heap Sort
Deque (Double-Ended Queue) - Deque<T> - Insert/remove from both ends
- appendLeft, appendRight
- popLeft, popRight
- peekLeft, peekRight
- Sliding Window Problems
- Palindrome checks
- BFS/DFS variations

πŸ› οΈ Utilities

Utility Description Example Usage
Int Extensions Convenient constants for integer bounds INT.infinity, INT.negativeInfinity

πŸ§ͺ Testing

Run tests:

dart test

πŸ“‹ Planned Features:

  • Trie - For string searching and prefix operations
  • Union-Find (Disjoint Set) - For dynamic connectivity problems
  • Graph Utilities - BFS, DFS, shortest path algorithms
  • Segment Trees - For range queries and updates
  • Dynamic Programming Helpers - Memoization utilities and common DP patterns
  • Advanced Trees - AVL, Red-Black trees
  • String Algorithms - KMP, Rabin-Karp implementations

πŸ“ Changelog

See CHANGELOG.md for detailed version history.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘¨β€πŸ’» Author

Vishwa Karthik
Software Engineer passionate about algorithms and clean code