mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-11-13 06:23:00 +08:00
Add divide and conquer example: best time to buy and sell stocks.
This commit is contained in:
parent
4973392cb9
commit
79cf9eb434
@ -37,7 +37,7 @@ _Explanation:_ In this case, no transaction is done, i.e. max `profit = 0`.
|
|||||||
|
|
||||||
## Possible Solutions
|
## Possible Solutions
|
||||||
|
|
||||||
### Divide and conquer approach
|
### Divide and conquer approach `O(2^n)`
|
||||||
|
|
||||||
We may try **all** combinations of buying and selling and find out the most profitable one by applying _divide and conquer approach_.
|
We may try **all** combinations of buying and selling and find out the most profitable one by applying _divide and conquer approach_.
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ As you may see, this is very inefficient. For example for just `20` prices the n
|
|||||||
|
|
||||||
If we avoid cloning the prices array between recursive function calls and will use the array pointer then additional space complexity will be proportional to the depth of the recursion: `O(n)`
|
If we avoid cloning the prices array between recursive function calls and will use the array pointer then additional space complexity will be proportional to the depth of the recursion: `O(n)`
|
||||||
|
|
||||||
## Peak Valley Approach
|
## Peak Valley Approach `O(n)`
|
||||||
|
|
||||||
If we plot the prices array (i.e. `[7, 1, 5, 3, 6, 4]`) we may notice that the points of interest are the consecutive valleys and peaks
|
If we plot the prices array (i.e. `[7, 1, 5, 3, 6, 4]`) we may notice that the points of interest are the consecutive valleys and peaks
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ Since the algorithm requires only one pass through the prices array, the time co
|
|||||||
|
|
||||||
Except of the prices array itself the algorithm consumes the constant amount of memory. Thus, additional space complexity is `O(1)`.
|
Except of the prices array itself the algorithm consumes the constant amount of memory. Thus, additional space complexity is `O(1)`.
|
||||||
|
|
||||||
## Accumulator Approach
|
## Accumulator Approach `O(n)`
|
||||||
|
|
||||||
There is even simpler approach exists. Let's say we have the prices array which looks like this `[1, 7, 2, 3, 6, 7, 6, 7]`:
|
There is even simpler approach exists. Let's say we have the prices array which looks like this `[1, 7, 2, 3, 6, 7, 6, 7]`:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user