Documentation
¶
Overview ¶
Maximum Contiguous Subarray(substring) -100, 1, 2 => 1, 2
Kadane Algorithm Dynamic Programming: O ( n )
Divide and Conquer method: O ( n lg n ) maximum of the following
getMCS(A, begin, mid) getMCS(A, mid+1, end) getMCS(crossing)
http://codercareer.blogspot.com/2013/02/no-44-maximal-stolen-values.html Problem: Maximize the money to rob without robbing adjacent houses.
Example 1. Rob 22(=15+7), not 11(=3+1+7)
Can't rob 3 + 15
___[ 3 ]___[ 15 ]___[ 1 ]___[ 4 ]___[ 7 ]___
Example 2. Rob 11(=3+1+7), not 9(=5+4)
___[ 3 ]___[ 5 ]___[ 1 ]___[ 4 ]___[ 7 ]___
A child is running up a staircase with n steps, and can hop either 1 step, 2 steps, or 3 steps at a time. Implement a method to count how many possible ways the child can run up the stairs.
Longest Common Subsequence ¶
Subsequence needs not be contiguous X = BDCABA Y = ABCBDAB => LCS is B C B
Dynamic Programming method : O ( m * n )
Source Files
¶
- 00_recursion_stack_overflow_0.go
- 00_recursion_stack_overflow_1.go
- 01_recursion_stack.go
- 02_recursion_factorial.go
- 03_recursion_conver_to_binary_number.go
- 04_recursion_fibonacci.go
- 04_recursion_fibonacci_closure.go
- 05_recursion_reverse_string.go
- 06_recursion_tower_hanoi.go
- 07_recursion_binary_search_tree.go
- 08_divide_and_conquer_merge_sort.go
- 09_divide_and_conquer_quick_sort.go
- 10_divide_and_conquer_maximum_contiguous_sum.go
- 11_dynamic_programming_coin_change.go
- 12_dynamic_programming_rob_houses.go
- 13_dynamic_programming_stairs.go
- 14_dynamic_programming_longest_common_subsequence.go