Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

Data Structures and Algorithms

A comprehensive collection of data structures and algorithms implemented in multiple programming languages. This repository serves as a resource for learning and practicing fundamental computer science concepts.

Overview

This repository contains implementations of various data structures and algorithms, organized by category. Each implementation includes:

  • Source code
  • Interactive playground (where available)
  • Documentation explaining the concept, approach, and complexity

The implementations are primarily in JavaScript, with some examples in other languages like Java, TypeScript, and Go.

Data Structures

Stack

No.NameSourceLiveDocumentationLevelPatternHint
1Stack using arraySourceJavaScript-EasyUsing Array operations-
2Stack using linkedlistSourceJavaScript-EasyUsing LinkedList operations-

Queue

No.NameSourceLiveDocumentationLevelPatternHint
1Queue using arraySourceJavaScriptDocumentationEasyUsing Array operations-
2Queue using linkedlistSourceJavaScriptDocumentationEasyUsing LinkedList operations-

SinglyLinkedList

No.NameSourceLiveDocumentationLevelPatternHint
1SinglyLinkedList implementationSourceJavaScriptDocumentationEasyLinked List operations-

DoublyLinkedList

No.NameSourceLiveDocumentationLevelPatternHint
1DoublyLinkedList implementationSourceJavaScriptDocumentationEasyLinked List operations-

Tree

No.NameSourceLiveDocumentationLevelPatternHint
1Binary Search TreeSourceJavaScriptDocumentationMediumTree operations-

Graphs

No.NameSourceLiveDocumentationLevelPatternHint
1Unweighted undirected graphSourceJavaScriptDocumentationMediumGraph operations-

HashTable

No.NameSourceLiveDocumentationLevelPatternHint
1HashTableSourceJavaScript-MediumHash operations-

Algorithms

Array

No.NameSourceLiveDocumentationLevelPatternHint
1Contains duplicatesSourcePlaygroundDocumentationEasySet/ObjectVerify duplicate using set or map/dict/object
2Two sum2- Input array sortedSourcePlaygroundDocumentationMediumTwo pointers-
33 sumSourcePlaygroundDocumentationMediumTwo pointers-
4Product of array except selfSourcePlaygroundDocumentationMediumPrefix and postfix pattern-
5Max sum subarraySourcePlaygroundDocumentationMediumKadane's algorithm-
6Minimum size subarray sumSourcePlaygroundDocumentationMediumSliding window-
7Sort ColorsSourcePlaygroundDocumentationMediumTwo pointers-
8Maximum product subarraySourcePlaygroundDocumentationMediumKadane's algorithm-
9Find minimum in rotated sorted arraySourcePlaygroundDocumentationMediumBinary search technique-
10Maximum Circular subarraySourcePlaygroundDocumentationMediumKadane's algorithm-
11Rotate arraySourcePlaygroundDocumentationMediumTwo pointers-
12Search in rotated sorted arraySourcePlaygroundDocumentationMediumBinary search-
13Container with most waterSourcePlaygroundDocumentationMediumTwo pointersCalculate max area and move shorter pointer inward
14First missing positive numberSourceJavaScriptDocumentationHardIn-place hashing-
15Best time to buy stock and sell stockSourceJavaScriptDocumentationEasyGreedy algorithmLook for minprice at each position
16Two missing numbersSourceJavaScriptDocumentationMediumSum and average calculations-
17Pascal's TriangleSourceJavaScriptDocumentationEasyArray traversal and sequential sum-
18Remove ElementSourceJavaScriptDocumentationEasyArray traversal-
19Can place flowersSourceJavaScriptDocumentationEasyArray traversal and comparison-
20Majority ElementSourceJavaScriptDocumentationEasyBoyer Moore Voting algorithm-
21Pivot IndexSourceJavaScriptDocumentationEasyArray traversal-
22Range Sum queriesSourceJavaScriptDocumentationEasyArray traversal-
23Disappeared numbersSourceJavaScriptDocumentationEasyArray traversal-
24Identical pairsSourceJavaScriptDocumentationEasyArray traversal & map-
25Destination CitySourceJavaScriptDocumentationEasyArray traversal & set-
26Set mismatchSourceJavaScriptDocumentationEasyArray traversal & marking numbers-
27Intersection of arraysSourceJavaScriptDocumentationEasySet and array traversal-
29Special arraySourceJavaScriptDocumentationEasyFrequency counter and array traversal-
30Max length between equal charsSourceJavaScriptDocumentationEasyArray traversal-
31Third largest elementSourceJavaScriptDocumentationEasyArray traversal-
32Odd occurrencesSourceJavaScriptDocumentationEasyXOR operation-
33Max countersSourceJavaScriptDocumentationMediumLazy update strategy-
34Tape equilibriumSourceJavaScriptDocumentationEasyPrefix sum-
35Perm checkSourceJavaScriptDocumentationEasySet operations-
36Equi leaderSourceJavaScriptDocumentationMediumBoyer-Moore algorithm-
37Count trianglesSourceJavaScriptDocumentationMediumTwo pointers-
38Min abs sum of twoSourceJavaScriptDocumentationMediumTwo pointers-
39Abs distinctSourceJavaScriptDocumentationEasyTwo pointers-
40Count distinct slicesSourceJavaScriptDocumentationMediumSliding window-

String

No.NameSourceLiveDocumentationLevelPatternHint
1Longest substring without repeating charactersSourceJavaScriptDocumentationMediumSliding Windowset to remove duplicates or map/dict with (char,index) key-value pairs to jump position
2Longest repeating character replacementSourceJavaScriptDocumentationMediumSliding Windowchar frequency dict/map with windowLength-maxFrequency > k check
3Minimum window substringSourceJavaScriptDocumentationHardSliding WindowTwo char frequecies map/dict for finding minimum length based on having == required
4Valid anagramSourceJavaScriptDocumentationEasyFrequency countingBalancing char frequency map/dict
5Group anagramsSourceJavaScriptDocumentationMediumFrequency countingGroup anagrams based on unique key(counter or sorted)
6Valid palindromeSourceJavaScriptDocumentationEasyTwo pointerCompare two strings using two pointers
7Longest palindromic substringSourceJavaScriptDocumentationMediumExpanding around center-
8Palindromic substringsSourceJavaScriptDocumentationMediumExpanding around center-
9Encode and decode stringsSourceJavaScriptDocumentationMediumBasic string and array operations-
10Greatest common devisor of stringsSourceJavaScriptDocumentationEasyEuclidean and String operations-
11Reverse words in stringSourceJavaScriptDocumentationMediumBasic string and array operations-
12Length of last wordSourceJavaScriptDocumentationEasyString traversal-

Dynamic programming

No.NameSourceLiveDocumentationLevelPatternHint
1Climbing stairsSourceJavaScriptDocumentationMediumDynamic programming-
2Coin changeSourceJavaScriptDocumentationMediumDynamic programming-
3Longest increasing subsequenceSourceJavaScriptDocumentationMediumDynamic programming(Bottom up)-
4Longest common subsequenceSourceJavaScriptDocumentationMediumTwo-dimentional bottom up Dynamic programming-
5Word breakSourceJavaScriptSourceMediumBottom up dynamic programming-
6Combination Sum 4SourceJavaScriptDocumentationMediumBottom up Dynamic programming-
7House robberSourceJavaScriptDocumentationMediumFibonacci pattern bottom-up dynamic programming-
8House robber 2SourceJavaScriptDocumentationMediumBottom-up dynamic programming-
9Decode waysSourceJavaScriptDocumentationMediumDynamic programming-
10Unique pathsSourceJavaScriptDocumentationMediumDynamic programming-
11Jump gameSourceJavaScriptDocumentationMediumDynamic programming or Greedy-
12Min abs sumSourceJavaScriptDocumentationMediumDynamic programming-
13Number solitaireSourceJavaScriptDocumentationMediumDynamic programming-

Binary

No.NameSourcePlaygroundDocumentationLevelPatternHint
1Sum of two integersSourceJavaScriptDocumentationMediumBitwise operations-
2Number of 1 BitsSourceJavaScriptDocumentationEasyBrian Kernighans-
3Counting BitsSourceJavaScriptDocumentationEasyDynamic programming-
4Missing numberSourceJavaScriptDocumentationEasyBitwise XOR-
5Reverse BitsSourceJavaScriptDocumentationEasyBitwise operations-

Stack

No.NameSourceLiveDocumentationLevelPatternHint
1Sort StackSourceJavaScriptDocumentationEasyStack push & pop-
2Balanced BracketsSourceJavaScriptDocumentationMediumStack push and pop-
3Reverse Polish NotationSourceJavaScriptDocumentationMediumStack push & pop-
4Daily TemperaturesSourceJavaScriptDocumentationMediumMonotonic decreasing stack-
5Number of People See In QueueSourceJavaScriptDocumentationMediumMonotonic decreasing stack-

LinkedList

No.NameSourceLiveDocumentationLevelPatternHint
1Reverse sublistSourceJavaScriptDocumentationEasyList traversal-
2Detect cycle in a linkedlistSourceJavaScriptDocumentationEasyFloyd's cycle-finding algorithm-
3Merge two sorted listsSourceJavaScriptDocumentationEasyArithmetic comparison-
4Merge K sorted listsSourceJavaScriptDocumentationHardDivide and conquer-
5Remove Kth node from end of listSourceJavaScriptDocumentationMediumTwo pointers-
6Reorder listSourceJavaScriptDocumentationMediumTwo pointers-
7Find middle nodeSourceJavaScriptDocumentationEasyTwo pointers-
8Find Kth node from end of listSourceJavaScriptDocumentationEasyTwo pointers-
9Partition listSourceJavaScriptDocumentationMediumTwo pointers-
10Remove duplicatesSourceJavaScriptDocumentationEasyTwo pointers-
11Binary to decimalSourceJavaScriptDocumentationEasyList traversal and math operations-

DoublyLinkedList

No.NameSourceLiveDocumentationLevelPatternHint
1Swap first and lastSourceJavaScriptDocumentationEasySwap nodes-
2Palindrome checkSourceJavaScriptDocumentationEasyTwo pointers-
3Swap node pairsSourceJavaScriptDocumentationMediumList traversal and pointer updates-

Tree

No.NameSourceLiveDocumentationLevelPatternHint
1Maximum depth of binary treeSourceJavaScriptDocumentationEasyDFS with recursion-
2Same treeSourceJavaScriptDocumentationEasyDFS with recursion-
3Invert or Flip binary treeSourceJavaScriptDocumentationEasyDFS with recursion-
4Binary tree maximum path sumSourceJavaScriptDocumentationHardDFS using recursion-
5Binary tree level order traversalSourceJavaScriptDocumentationEasyBFS traversal-
6Serialize and deserialize binary treeSourceJavaScriptDocumentationHardDFS preorder traversal-
7Subtree of another treeSourceJavaScriptDocumentationEasyDFS with recursion-
8Construct binary tree from traversalsSourceJavaScriptDocumentationMediumDFS with recursion-
9Validate BSTSourceJavaScriptDocumentationMediumDFS using recursion-
10Kth smallest element in BSTSourceJavaScriptDocumentationMediumInorder traversal-
11Lowest Common Ancestor of BSTSourceJavaScriptDocumentationMediumTree traversal-
12TrieSourceJavaScriptDocumentationMediumString character iteration-
13Design and Search words DatastructureSourceJavaScriptDocumentationMediumTrie and DFS recursion-
14Word search 2SourceJavaScriptDocumentationHardBacktracking with Trie-

Graph

No.NameSourceLiveDocumentationLevelPatternHint
1Clone graphSourceJavaScriptDocumentationMediumDFS using recursion-
2Course scheduleSourceJavaScriptDocumentationMediumDFS using recursion-
3Pacific Atlantic waterflowSourceJavaScriptDocumentationMediumDFS using recursion-
4Number of IslandsSourceJavaScriptDocumentationMediumDFS using recursion-
5Alien dictionarySourceJavaScriptDocumentationHardTopological sorting-
6Graph valid treeSourceJavaScriptDocumentationMediumUnion Find algorithm-
7Number of connected componentsSourceJavaScriptDocumentationMediumUnion Find algorithm-
8Walls and gatesSourceJavaScriptDocumentationMediumBFS traversal-
9Fib frogSourceJavaScriptDocumentationMediumDynamic programming-

Matrix

No.NameSourceLiveDocumentationLevelPatternHint
1Set matrix zerosSourceJavaScriptDocumentationMediumIn-place updates-
2Spiral matrixSourceJavaScriptDocumentationMediumBoundary traversal-
3Rotate imageSourceJavaScriptDocumentationMediumIn-place rotation-
4Word searchSourceJavaScriptDocumentationMediumDFS using recursion-

Interval

No.NameSourceLiveDocumentationLevelPatternHint
1Insert intervalSourceJavaScriptDocumentationMediumMath operations-
2Merge intervalSourceJavaScriptDocumentationMediumSorting and math operations-
3Non-overlapping intervalsSourceJavaScriptDocumentationMediumGreedy algorithm-
4Meeting roomsSourceJavaScriptDocumentationMediumGreedy algorithm-
5Meeting rooms 2SourceJavaScriptDocumentationMediumTwo pointers-
6Meeting rooms 3SourceJavaScriptDocumentationMediumGreedy algorithmTwo minheaps + greedy scheduling + simulation
7Max non-overlapping segmentsSourceJavaScriptDocumentationMediumGreedy algorithm-

HashTable

No.NameSourceLiveDocumentationLevelPatternHint
1DuplicatesSourceJavaScriptDocumentationEasyUsing Map-
2Two sumSourceJavaScriptDocumentationEasyUsing Map-
3First non repeating characterSourceJavaScriptDocumentationEasyUsing Map-
4Group anagramsSourceJavaScriptDocumentationMediumMap methods-
5Verify Common ElementsSourceJavaScriptDocumentationEasyMap methods-
6Longest consecutive sequenceSourceJavaScriptDocumentationMediumSet operations-
7Valid SudokuSourceJavaScriptDocumentationMediumMap and Set methods-
8Letter combinationsSourceJavaScriptDocumentationMediumBacktracking with hash mapping-
9LRU CacheSourceJavaScriptDocumentationMediumHash Table with linked list-
10Maximum number of balloonsSourceJavaScriptDocumentationEasyCharacter frequency map-
11Isomorphic StringsSourceJavaScriptDocumentationEasyCharacter mapping-
14First unique characterSourceJavaScriptDocumentationEasyCharacter frequency count-

Sorting

No.NameSourceLiveDocumentationLevelComplexityHint
1Bubble sortSourceJavaScriptDocumentationEasyTC: O(n²), SC: O(1)-
2Selection sortSourceJavaScriptDocumentationEasyTC: O(n²), SC: O(1)-
3Insertion sortSourceJavaScriptDocumentationEasyTC: O(n²), SC: O(1)-
4Merge sortSourceJavaScriptDocumentationMediumTC: O(n log n), SC: O(n)-
5Quick sortSourceJavaScriptDocumentationMediumTC: O(n²), SC: O(log n)-
6Heap sortSourceJavaScriptDocumentationHardTC: O(n log n), SC: O(1)-
7Radix sortSourceJavaScriptDocumentationMediumTC: O(d(n+k)), SC: O(n+k)-
8Max product of threeSourceJavaScriptDocumentationEasyArray sorting-

Misc

No.NameSourceLiveDocumentationLevelPatternHint
1Frog jumpSourceJavaScriptDocumentationEasyMathematical calculation-
2Missing elementSourceJavaScriptDocumentationEasyMathematical calculation-
3Frog river oneSourceJavaScriptDocumentationEasySet operations-
4Count divisibleSourceJavaScriptDocumentationEasyMathematical calculation-

关于 About

List of Programs related to data structures and algorithms
algorithm-challengesalgorithmsdatastructuresdatastructures-algorithmsdsadsa-algorithmdynamic-programminggraphinterviewjavajavascriptleetcodelinkedlistlodashpolyfillsprototypequeuestacktree

语言 Languages

Python35.6%
JavaScript33.1%
Java30.6%
Go0.4%
TypeScript0.2%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
54
Total Commits
峰值: 11次/周
Less
More

核心贡献者 Contributors