algorithms icon indicating copy to clipboard operation
algorithms copied to clipboard

Interview prep with algorithms and data structures

algorithms

Build Status Coverage Status

This contains my practice and preparation for interview/whiteboarding problems. I'll start with the fundamentals and then begin working on more complicated algorithms.

List of Problems

.
├─ javascript
│  ├─ array
│  │  ├── greatestSubarray.js
│  │  ├── jumpingArray.js
│  │  ├── leader.js
│  │  ├── minAdditions.js
│  │  ├── peak.js
│  │  └── spiralGrid.js
│  ├─ genetic algorithms
│  │  └── string.js
│  ├─ grid
│  │  ├── largestNeighbor.js
│  │  ├── largestRegion.js
│  │  └── gridTraversal.js
│  ├─ kmeans (kth clustering)
│  │  └── index.js
│  ├─ knn (kth nearest neighbor)
│  │  └── index.js
│  ├─ linkedlist
│  │  ├── cyclical.js
│  │  ├── findIntersection.js
│  │  ├── mergeLists.js
│  │  ├── reverseList.js
│  │  ├── sumLists.js
│  │  ├── ListNode.js
│  │  └── DoublyListNode.js
│  ├─ math
│  │  └── randomWeight.js
│  ├─ recursion
│  │  ├── knapsack.js
│  │  ├── depthFinder.js
│  │  ├── numberOfPathsInMatrix.js
│  │  ├── pascalsTriangle.js
│  │  ├── permutations.js
│  │  └── staircase.js
│  ├─ search
│  │  └── binarySearch.js
│  ├─ sort
│  │  └── mergesort.js
│  ├─ string
│  │  ├── balancedParenthese.js
│  │  ├── isPalindrome.js
│  │  ├── longestPalindrome.js
│  │  ├── longestSubsequence.js
│  │  ├── longestSubstring.js
│  │  └── kmp.js
│  ├─ systemdesign
│  │  └── lrucache.js
│  ├─ tree
│  │  ├── pathSum.js
│  │  ├── columnSort.js
│  │  ├── TreeNode.js
│  │  └── killProcess.js
│  └─ trie
└─ java
   ├─ epi (elements of programming interview)
   ├─ interview
   ├─ leetcode
   ├─ misc
   └─ programmingteam (problems from our ACM chapter team)

Testing

For the Javascript code:

npm test

For the Java code (this needs to be run in the java directory):

python test_runner.py

Style Guides

Please read and follow the style guides for the respective language.

License

MIT License