Commit Graph

587 Commits

Author SHA1 Message Date
Oleksii Trekhleb
afa4948767 Simplify AVL tree node deletion. 2018-09-24 09:45:31 +03:00
Hafidz Jazuli Luthfi
04e533e4b5 Add remove method (#33)
Remove node in AvlTree with auto balancing.

Fix issue: https://github.com/trekhleb/javascript-algorithms/issues/13
2018-09-24 09:12:38 +03:00
Yavorski
9f3561d291 Fix Stack pop comlexity to be O(1) (#214)
* By definition Stack push/pop time complexity should be O(1).
* Fix is applied by removing head instead of tail in pop method.
* Push method now do preprend instead of append.
* Fix consistency between toString and toArray methods.
2018-09-24 07:31:18 +03:00
Oleksii Trekhleb
45fb2a24be Vectorize images for Levenshtein Distance. 2018-09-20 16:25:46 +03:00
Ocn
40e48ddfb2 Fix minor typos in README (#211) 2018-09-20 16:23:17 +03:00
Oleksii Trekhleb
2451db975d Add iterative version of Euclidean algorithm. 2018-09-18 08:17:47 +03:00
Vamshi Bachaneboina
c00c689255 Update euclideanAlgorithm.js (#207)
Method 2 is easy to evaluate or understand without using recursion stack!
2018-09-18 08:04:56 +03:00
Oleksii Trekhleb
51d67e7eac Add fibonacci Binet's formula. 2018-09-15 09:17:19 +03:00
Karlo Vrbić
a23400380d Add fibonnaci sequence closed form function (#130)
* Add fibonnaci sequence closed form function

* Revert package-lock.json
2018-09-14 18:01:41 +03:00
Oleksii Trekhleb
dea368cb16 Add more fibonacci test cases. 2018-09-14 17:56:38 +03:00
Oleksii Trekhleb
46bc844fc6 Add several more comments to in place quick sort. 2018-09-14 17:21:51 +03:00
Kevin Brewer
66f19d65c5 Minor refactor of QuickSortInPlace for simplification (#187) 2018-09-14 17:03:37 +03:00
Oleksii Trekhleb
92b9e6ad1d Add more tests to isPositive() bitwise function. 2018-09-14 08:06:48 +03:00
ADITYA
ab7755aad7 feat(bitwise): Function to check if a number is positive (#204) 2018-09-14 07:42:42 +03:00
Oleksii Trekhleb
de6a24e0d1 Minor code style fixes for bitwise multiplication. 2018-09-08 23:09:04 +03:00
ADITYA
bc8943dee2 Perform multiplication of any two integers positive or negative through bit manipulations (#201) 2018-09-08 22:51:03 +03:00
Vinicius
1a62078f26 Improve JSDocs in Stack.js (#203)
The functions' comments were copied from Queue.js, but some words were not replaced.
I also made some changes to the wording for clarification.
2018-09-08 22:35:24 +03:00
Oleksii Trekhleb
6f27113993 Add reverse() method for doubly linked list. 2018-09-08 22:25:23 +03:00
Oleksii Trekhleb
80ecbe0b3e Move linked list traversals into separate section. 2018-09-08 22:20:52 +03:00
Oleksii Trekhleb
2feec48ea6 Add more test cases for linked list reversion. 2018-09-08 12:16:15 +03:00
Hanh D. TRAN
4989a6a3b0 Add LinkedList traversal and reverse implementations (#194)
* Add LinkedList traverse function

* Add LinkedList reverse traversal implementations

* Update LinkedList traverse function

* Update LinkedList reverse traversal and test cases

* Update LinkedList traversal tests
2018-09-08 11:55:51 +03:00
Oleksii Trekhleb
7dc60c96bf Add Fast Powering algorithm. 2018-09-04 18:27:38 +03:00
Oleksii Trekhleb
8116aa7cfb Refactor fast powering algorithm. 2018-09-04 17:35:48 +03:00
HatimLokhandwala
8676c1b9fe Adding math algorithm to compute power and its tests (#172)
* Adding math algorithm to compute power and its tests

* adding more test cases, updating compute power js

* Updating ReadMe for power computation algorithm
2018-09-04 17:21:09 +03:00
Oleksii Trekhleb
ea78fb6eaf Fix ShellSort README errors (issue #195). 2018-09-04 12:05:25 +03:00
Oleksii Trekhleb
788ff22c90 Minor refactoring of dpMaximumSubarray. 2018-09-04 11:39:43 +03:00
Oleksii Trekhleb
814fa773ca Add more test cases for finding max sub-array algorithm. 2018-09-04 11:35:13 +03:00
Kevin Brewer
2a2b5daa7d Simplify dpMaximumSubarray (#189)
* Simplify dpMaximumSubarray

* change var name from currentMaxSum to currentSum

* fix comment with old variable name
2018-09-04 09:47:05 +03:00
Kevin Brewer
6b0bacd993 clarify comments (#193) 2018-08-31 12:14:29 +03:00
Hanh D. TRAN
002d32a8cd Update LinkedList prepend pseudocode and append test (#188)
* Add LinkedList test

* Add pseudocode for LinkedList prepend
2018-08-30 08:43:21 +03:00
Jack Lee
872521fb03 Partial translation of Simplified Chinese (#185)
* init

* init

* init

* init
2018-08-30 08:30:24 +03:00
Oleksii Trekhleb
68af4fc165 Clean up Heaps. 2018-08-30 08:25:38 +03:00
Kevin Brewer
bc50fff2ee clean up Heap implementation (#184) 2018-08-30 08:11:14 +03:00
Oleksii Trekhleb
a8d7435b8d Fix LinkedList pseudo-code (issue #191). 2018-08-30 08:04:47 +03:00
Oleksii Trekhleb
af64d12a23 Add more unicode related tests to longestCommonSubstring algorithm. 2018-08-28 06:58:43 +03:00
DADDOU Mohamed El Amine
82ac89b16a fix longestCommonSubstring() to handle unicode characters (#129) (#176) 2018-08-28 06:56:44 +03:00
Klaus Sinani
e09d526785 Fix minor typo on segment-tree readme (#183) 2018-08-28 06:37:19 +03:00
Oleksii Trekhleb
b9d0d9ab38 Add isPowerOfTwo function. 2018-08-27 17:13:43 +03:00
Tapasweni Pathak
70b0e0a652 Add ifPowerOf2c (#155) 2018-08-27 16:59:43 +03:00
Mahmoud Aslan
20497bb044 Fixed Contains operation pseudo code (#180) 2018-08-27 16:37:25 +03:00
Oleksii Trekhleb
b1f31cd067 Fix issue #179. 2018-08-27 16:30:18 +03:00
Oleksii Trekhleb
bdf8a174eb Improve Trie test coverage back to 100%. 2018-08-27 15:54:55 +03:00
Oleksii Trekhleb
4104155182 Simplify deletion method of TrieNode. 2018-08-27 15:45:48 +03:00
Oleksii Trekhleb
a7ffba157c Extend Trie and TrieNode tests. 2018-08-27 15:38:50 +03:00
Kevin Brewer
d25eff49e6 Add Trie.deleteWord and TrieNode.removeChild (#181) 2018-08-27 15:33:16 +03:00
Oleksii Trekhleb
6e2ff9b604 Add comments to Trie "add" method. 2018-08-25 13:34:05 +03:00
Kevin Brewer
eac3e81a21 Fix TrieNode.addChild so substrings get marked as complete words (#177) 2018-08-25 13:27:44 +03:00
Oleksii Trekhleb
20b0c48e84 Add comments to Stack code. 2018-08-22 07:49:22 +03:00
Oleksii Trekhleb
571d9312cd Fix trie's doesWordExists method. 2018-08-21 23:03:04 +03:00
Oleg
392cd9806d Fix method Trie::doesWordExist() (#175)
Method Trie::doesWordExist() return `true` when word is complete otherwise `false`
2018-08-21 23:00:11 +03:00
Oleksii Trekhleb
5eb1195c61 Add backtracking solution for finding the power-set of a set. 2018-08-21 16:55:26 +03:00
Oleksii Trekhleb
bffacf0707 Add nQueens bitwise solution. 2018-08-20 18:12:56 +03:00
Oleksii Trekhleb
20159312be Move nQueens bitwise version to the same folder with nQueens algorithm. 2018-08-20 15:59:37 +03:00
Matej Jellus
18ba3a4db3 Add N queens problem bitwise solution (#15)
* Add N queens problem bitwise solution

* Update code to corespond with eslint
2018-08-20 15:57:01 +03:00
Oleksii Trekhleb
5a57c5f018 Add comments to Queue class. 2018-08-17 18:00:20 +03:00
Oleksii Trekhleb
5eea37837f Add annotations to Queue. 2018-08-17 17:47:29 +03:00
Oleksii Trekhleb
260f24b2cb Update Bits Operations README. 2018-08-17 10:41:18 +03:00
Oleksii Trekhleb
ecfc287927 Update Bits Operations README. 2018-08-17 10:36:47 +03:00
Oleksii Trekhleb
983492115d Fix tests. 2018-08-17 10:31:18 +03:00
Oleksii Trekhleb
a02d5f625d Move common Max/Min Heap code to Heap.js. 2018-08-17 10:23:07 +03:00
Oleksii Trekhleb
031c5da556 Refactor Heaps. 2018-08-16 21:03:32 +03:00
Oleksii Kersov
10e633f075 Add MaxHeap (#167)
* Add MaxHeap

* Add parent class for MinHeap and MaxHeap
2018-08-16 18:18:19 +03:00
Oleksii Trekhleb
6e63a0548e Add Inverse Discrete Fourier Transform. 2018-08-16 13:14:40 +03:00
Oleksii Trekhleb
351a745f55 Refactor DFT and add common tests for Fourier. 2018-08-16 12:37:06 +03:00
Oleksii Trekhleb
13ed5061a3 Update FFT tests. 2018-08-15 17:47:32 +03:00
Oleksii Trekhleb
c2f7e49f07 Fix README for Fourier transform. 2018-08-15 13:40:16 +03:00
Oleksii Trekhleb
d736b2f355 Style fixes for FFT code. 2018-08-15 13:32:09 +03:00
Oleksii Trekhleb
ac9920a0f3 Style fixes for FFT code. 2018-08-15 13:27:50 +03:00
Oleksii Trekhleb
a88c45a329 Fix typos. 2018-08-15 13:00:04 +03:00
Oleksii Trekhleb
12d649e372 Implement Discrete Fourier Transform function. 2018-08-15 12:56:23 +03:00
Oleksii Trekhleb
53a0b6168d Fix bug with converting complex number into polar form. 2018-08-15 12:55:35 +03:00
Oleksii Trekhleb
4bdac18ae0 Add polar form of complex number to README. 2018-08-14 23:19:30 +03:00
Oleksii Trekhleb
d0c4baf7b3 Add DFT. 2018-08-14 23:12:17 +03:00
Oleksii Trekhleb
8e66189eff Update Fourier README. 2018-08-14 23:03:07 +03:00
Oleksii Trekhleb
e252eb631d Add polar representation of complex numbers. 2018-08-14 22:56:13 +03:00
Oleksii Trekhleb
096d5a8b5b Add Radian. 2018-08-14 22:31:13 +03:00
Oleksii Trekhleb
b3315966e5 Refactor complex numbers. 2018-08-14 21:30:57 +03:00
Oleksii Trekhleb
7d6854489e Merge branches 'fourier' and 'master' of https://github.com/trekhleb/javascript-algorithms into fourier 2018-08-14 17:45:56 +03:00
Oleksii Trekhleb
b0c9057cdb Fix pseudocode formatting. 2018-08-14 15:46:58 +03:00
Moshe
b6ac765c99 Pseudocode + big O for BFS (#166) 2018-08-14 15:21:34 +03:00
Moshe
953eaf8970 Update README.md (#165)
Add Pseudocode and Big O
2018-08-14 15:20:54 +03:00
Moshe
7207bcefb2 Update README.md (#164)
Add Pseudocode for Doubly Linked List
2018-08-14 15:20:09 +03:00
Moshe
5667cfb550 Update README.md (#163)
fix verbiage
2018-08-14 15:18:55 +03:00
Oleksii Trekhleb
29fb0c7055 Rename variables. 2018-08-13 18:09:46 +03:00
Oleksii Trekhleb
8ea35a5549 Merge branch 'master' of https://github.com/trekhleb/javascript-algorithms into fourier 2018-08-13 18:08:07 +03:00
Oleksii Trekhleb
9111568fc0 Add bits counter function. 2018-08-13 18:06:48 +03:00
Oleksii Trekhleb
7d3115edaa Use existing complex numbers implementation for Fourier. 2018-08-13 17:57:17 +03:00
Prateek Karnal
6f10b0e10f Added Fast Fourier transform (#135)
* Added Fast fourier transform

* Adding DFT explanation

* Added tests for Fast Fourier transform

* Fixed some comments
2018-08-13 17:45:50 +03:00
Oleksii Trekhleb
3c37ba4424 Add bitsDiff function. 2018-08-13 11:02:58 +03:00
Tapasweni Pathak
2361e6fc44 Add countBitsToflipAToB (#154) 2018-08-13 10:52:29 +03:00
Oleksii Trekhleb
6c9641aa3d Add pseudocodes to LinkedList. 2018-08-13 10:41:06 +03:00
Oleksii Trekhleb
f6c091bcb1 Add pseudocodes to LinkedList. 2018-08-13 10:38:19 +03:00
Moshe
02b70d95d6 Update README.md (#162)
Add Pseudocode and Big O notation
2018-08-13 10:30:49 +03:00
Oleksii Trekhleb
37c7be15e9 Add bit counter function. 2018-08-12 10:18:32 +03:00
Oleksii Trekhleb
9ce137cef8 Add bit counter function. 2018-08-12 10:16:12 +03:00
Tapasweni Pathak
a8f7d6a333 Add countSetBits (#152) 2018-08-12 10:06:13 +03:00
Oleksii Trekhleb
70ec623cbf Add ComplexNumber. 2018-08-11 15:58:19 +03:00
Oleksii Trekhleb
46b13f04fd Update BitWise Operation README. 2018-08-10 18:22:06 +03:00
Oleksii Trekhleb
7f189498cf Update BitWise Operation README. 2018-08-10 18:19:58 +03:00
Ujjwal Aryal
3f963ccc21 Update README.md (#141) 2018-08-10 18:16:39 +03:00
Oleksii Trekhleb
50c025949b Refactor bitwise multiplication. 2018-08-10 18:14:39 +03:00
Ujjwal Aryal
53c7143e07 Create multiply.js (#140)
Multiply Two numbers using Bit-wise Operator.
2018-08-10 17:39:45 +03:00
Oleksii Trekhleb
ff4854e0b8 Simplify PolynomialHash function. 2018-08-09 16:04:59 +03:00
Oleksii Trekhleb
51f496ce2e Add SimplePolynomialHash function. 2018-08-09 15:46:22 +03:00
Oleksii Trekhleb
d5be477bd8 Add Polynomial Hash function. 2018-08-09 15:12:36 +03:00
Oleksii Trekhleb
98a44ea832 Added Polynomial Hash Function. 2018-08-09 07:24:31 +03:00
Oleksii Trekhleb
b3a503aa6d Add unicode based tests for RabinKarp. 2018-08-09 06:10:47 +03:00
Oleksii Trekhleb
e7d22b4883 Use '===' for double check string comparision in RabinKarp. 2018-08-09 06:05:09 +03:00
Oleksii Trekhleb
d303d83673 Use rolling hash function for RabinKarp. 2018-08-09 05:57:53 +03:00
Oleksii Trekhleb
650e3099e5 Merge branches 'issue-102-rabin-karp-fix' and 'master' of https://github.com/trekhleb/javascript-algorithms into issue-102-rabin-karp-fix 2018-08-06 16:55:01 +03:00
Oz Weiss
7c9601df3e Update combinationSum.js (#137)
fixing a few typos in comments
2018-08-06 16:40:23 +03:00
Diego Paiva
941feda305 Fix kruskal's exception message for directed graph (#138) 2018-08-06 16:26:22 +03:00
Oleksii Trekhleb
88bbfdc470 Add fromArray() methods to LinkedList and DoublyLinkedList. 2018-08-06 16:12:31 +03:00
Simon
0ea24230d4 Patch 5 (#127)
* New function 'fromArray'

Function get array of Doubly Linked List Nodes, go through and append to currently list.

* New Test for new function 'fromArray'

* Minor changes

Minor changes about coding style.
2018-08-06 16:02:46 +03:00
Oleksii Trekhleb
7a4b829abe Fix issue #132 - Wrong Red-Black Tree pictures in README. 2018-08-02 16:43:54 +03:00
Oleksii Trekhleb
ecc8c65466 Add comments to Linked List code. 2018-07-30 15:38:04 +03:00
Oleksii Trekhleb
97926b1243 Add comments to Linked List code. 2018-07-30 15:35:28 +03:00
seIncorp
5105898aa7 Twice defined (#124)
* Twice defined

Parameter 'deletedTail' were defined twice.

* Update LinkedList.js

* Update LinkedList.js
2018-07-30 15:33:17 +03:00
Oleksii Trekhleb
6e897a0a7a Minor README updates. 2018-07-30 14:18:56 +03:00
Bruce-Feldman
c4605ea13d Refactor Rabin-Karp (#110)
* Simplify Rabin-Karp functionality

* Created Rabin Fingerprinting module within util directory

* Updated Rabin-Karp search to use rolling hash module
Incorporate tests from @dubzzz
2018-07-30 12:20:40 +03:00
Oleksii Trekhleb
305e30357c Add comments to HashTable hash function. 2018-07-29 08:28:03 +03:00
Oleksii Trekhleb
f1152bf4b4 Update README for Trapping Rain Water problem. 2018-07-27 14:11:33 +03:00
Oleksii Trekhleb
26239f9a97 Refactor dynamic programming approach of Trapping Rain Water problem. 2018-07-27 14:06:58 +03:00
Oleksii Trekhleb
f07e96ec59 Refactor dynamic programming approach of Trapping Rain Water problem. 2018-07-27 14:04:37 +03:00
Oleksii Trekhleb
340a71b7d9 Add brute force solution of Rain Terraces problem. 2018-07-27 13:40:07 +03:00
Oleksii Trekhleb
6fc429975f Add Rain Terraces problem. 2018-07-27 13:00:24 +03:00
Oleksii Trekhleb
3271ee92b9 Add Rain Terraces problem. 2018-07-27 12:59:56 +03:00
Keoni Garner
f142ca00b2 Add rain-terraces (trapping rain water) algorithm (#112)
* Add rain-terraces (trapping rain water) algorithm

* Fixed linting errors

* Fixed linting errors
2018-07-27 12:25:15 +03:00
Oleksii Trekhleb
80e3216609 Add annotations to Trie. 2018-07-26 18:02:34 +03:00
Oleksii Trekhleb
39acb2b65d Avoid using toBeTruthy() and toBeFalsy() because of type coercion. 2018-07-26 16:14:26 +03:00
Oleksii Trekhleb
39014f7543 Fix issue #105. 2018-07-24 12:37:55 +03:00
Oleksii Trekhleb
12f0b331b8 Add more tests for rabinKarp. 2018-07-24 12:29:12 +03:00
Nicolas DUBIEN
0361fe5cf8 Fix knuthMorrisPratt for empty word request (#101) 2018-07-24 12:26:22 +03:00
Oleksii Trekhleb
6a3a4b8697 Add new test cases for KMP algorithm. 2018-07-23 18:00:54 +03:00
Oleksii Trekhleb
76c172b20b Code style fixes for negative Counting Sort testing. 2018-07-22 18:23:39 +03:00
Nicolas DUBIEN
3be02b5519 Fix CountingSort for negative numbers (#100) 2018-07-22 18:03:13 +03:00
Oleksii Trekhleb
149444b47c Add Interpolation Search. 2018-07-18 14:35:02 +03:00
Oleksii Trekhleb
31344fa6a2 Add tests for Jump Search. 2018-07-18 12:03:21 +03:00
Oleksii Trekhleb
a327b68a06 Add Jump Search algorithm. 2018-07-18 09:21:20 +03:00
Oleksii Trekhleb
b73ddec94d Add Pascal's Triangle based solution for Unique Paths problem. 2018-07-14 11:08:19 +03:00
Oleksii Trekhleb
d8fb6579b1 Add Unique Paths problem with backtracking and DP solutions. 2018-07-14 10:35:35 +03:00
Oleksii Trekhleb
863dbdbac3 Fix issue #98. 2018-07-13 17:48:27 +03:00
Oleksii Trekhleb
fafa52c26e Refactor Floyd-Warshall tests. 2018-07-13 17:36:39 +03:00
Oleksii Trekhleb
2874637d40 Refactor Floyd-Warshall tests. 2018-07-13 17:05:21 +03:00
Oleksii Trekhleb
dca7f6f874 Refactor Floyd-Warshall. 2018-07-13 16:56:33 +03:00
Oleksii Trekhleb
994ac2781a Update Floyd-Warshall READMEs. 2018-07-13 15:02:58 +03:00
vivaxy
9f8fd33202 feat(algorithms): Add Floyd-Warshall (#97) 2018-07-13 14:23:47 +03:00
Oleksii Trekhleb
3e8540beac Add Jump Game. 2018-07-10 08:17:52 +03:00
Oleksii Trekhleb
549759757d Add bottom-up dynamic programming solution to Jump Game. 2018-07-10 07:56:28 +03:00
Oleksii Trekhleb
57c2a334ce Add top-down dynamic programming solution to Jump Game. 2018-07-10 07:37:29 +03:00