Add Pascal's Triangle based solution for Unique Paths problem.

This commit is contained in:
Oleksii Trekhleb
2018-07-14 11:08:19 +03:00
parent d8fb6579b1
commit b73ddec94d
4 changed files with 33 additions and 1 deletions

View File

@@ -94,6 +94,13 @@ the bottom right one with number `3`.
**Auxiliary Space Complexity**: `O(m * n)` - since we need to have DP matrix.
### Pascal's Triangle Based
This question is actually another form of Pascal Triangle.
The corner of this rectangle is at `m + n - 2` line, and
at `min(m, n) - 1` position of the Pascal's Triangle.
## References
- [LeetCode](https://leetcode.com/problems/unique-paths/description/)

View File

@@ -0,0 +1,12 @@
import uniquePaths from '../uniquePaths';
describe('uniquePaths', () => {
it('should find the number of unique paths on board', () => {
expect(uniquePaths(3, 2)).toBe(3);
expect(uniquePaths(7, 3)).toBe(28);
expect(uniquePaths(3, 7)).toBe(28);
expect(uniquePaths(10, 10)).toBe(48620);
expect(uniquePaths(100, 1)).toBe(1);
expect(uniquePaths(1, 100)).toBe(1);
});
});

View File

@@ -0,0 +1,13 @@
import pascalTriangle from '../../math/pascal-triangle/pascalTriangle';
/**
* @param {number} width
* @param {number} height
* @return {number}
*/
export default function uniquePaths(width, height) {
const pascalLine = width + height - 2;
const pascalLinePosition = Math.min(width, height) - 1;
return pascalTriangle(pascalLine)[pascalLinePosition];
}