File tree Expand file tree Collapse file tree 3 files changed +53
-0
lines changed Expand file tree Collapse file tree 3 files changed +53
-0
lines changed Original file line number Diff line number Diff line change 105105 * [ RodCutting] ( Dynamic-Programming/RodCutting.js )
106106 * [ Shuf] ( Dynamic-Programming/Shuf.js )
107107 * [ SieveOfEratosthenes] ( Dynamic-Programming/SieveOfEratosthenes.js )
108+ * [ UniquePaths] ( Dynamic-Programming/UniquePaths.js )
108109 * ** Sliding-Window**
109110 * [ LongestSubstringWithoutRepeatingCharacters] ( Dynamic-Programming/Sliding-Window/LongestSubstringWithoutRepeatingCharacters.js )
110111 * [ PermutationinString] ( Dynamic-Programming/Sliding-Window/PermutationinString.js )
Original file line number Diff line number Diff line change 1+
2+ /*
3+ *
4+ * Unique Paths
5+ *
6+ * There is a robot on an `m x n` grid.
7+ * The robot is initially located at the top-left corner.
8+ * The robot tries to move to the bottom-right corner.
9+ * The robot can only move either down or right at any point in time.
10+ *
11+ * Given the two integers `m` and `n`,
12+ * return the number of possible unique paths that the robot can take to reach the bottom-right corner.
13+ * More info: https://leetcode.com/problems/unique-paths/
14+ */
15+
16+ /*
17+ * @param {number } m
18+ * @param {number } n
19+ * @return {number }
20+ */
21+
22+ const uniquePaths = ( m , n ) => {
23+ // only one way to reach end
24+ if ( m === 1 || n === 1 ) return 1
25+
26+ // build a linear grid of size m
27+ // base case, position 1 has only 1 move
28+ const paths = new Array ( m ) . fill ( 1 )
29+
30+ for ( let i = 1 ; i < n ; i ++ ) {
31+ for ( let j = 1 ; j < m ; j ++ ) {
32+ // paths[j] in RHS represents the cell value stored above the current cell
33+ // paths[j-1] in RHS represents the cell value stored to the left of the current cell
34+ // paths [j] on the LHS represents the number of distinct pathways to the cell (i,j)
35+ paths [ j ] = paths [ j - 1 ] + paths [ j ]
36+ }
37+ }
38+ return paths [ m - 1 ]
39+ }
40+
41+ export { uniquePaths }
Original file line number Diff line number Diff line change 1+ import { uniquePaths } from '../UniquePaths'
2+
3+ describe ( 'Unique Paths' , ( ) => {
4+ it ( 'should return 28 when m is 3 and n is 7' , ( ) => {
5+ expect ( uniquePaths ( 3 , 7 ) ) . toBe ( 28 )
6+ } )
7+
8+ it ( 'should return 48620 when m is 10 and n is 10' , ( ) => {
9+ expect ( uniquePaths ( 10 , 10 ) ) . toBe ( 48620 )
10+ } )
11+ } )
You can’t perform that action at this time.
0 commit comments