Skip to content

Commit 699156e

Browse files
author
Lei Cao
committed
63 70 climb stairs minimum path sum
1 parent 1db9f9a commit 699156e

File tree

5 files changed

+139
-2
lines changed

5 files changed

+139
-2
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,14 @@ LeetCode
166166
|73|[Set Matrix Zeroes](https://oj.leetcode.com/problems/set-matrix-zeroes/)| [C++](./algorithms/setMatrixZeroes/setMatrixZeroes.cpp)|Medium|
167167
|72|[Edit Distance](https://oj.leetcode.com/problems/edit-distance/)| [C++](./algorithms/editDistance/editDistance.cpp)|Hard|
168168
|71|[Simplify Path](https://oj.leetcode.com/problems/simplify-path/)| [C++](./algorithms/simplifyPath/simplifyPath.cpp)|Medium|
169-
|70|[Climbing Stairs](https://oj.leetcode.com/problems/climbing-stairs/)| [C++](./algorithms/climbStairs/climbStairs.cpp)|Easy|
169+
|70|[Climbing Stairs](https://oj.leetcode.com/problems/climbing-stairs/)| [C++](./algorithms/climbStairs/climbStairs.cpp), [Java](./algorithms-java/src/dynamicProgramming/climbStairs/climbStairs.java)|Easy|
170170
|69|[Sqrt(x)](https://oj.leetcode.com/problems/sqrtx/)| [C++](./algorithms/sqrt/sqrt.cpp)|Medium|
171171
|68|[Text Justification](https://oj.leetcode.com/problems/text-justification/)| [C++](./algorithms/textJustification/textJustification.cpp)|Hard|
172172
|67|[Plus One](https://oj.leetcode.com/problems/plus-one/)| [C++](./algorithms/plusOne/plusOne.cpp)|Easy|
173173
|66|[Valid Number](https://oj.leetcode.com/problems/valid-number/)| [C++](./algorithms/validNumber/validNumber.cpp)|Easy|
174174
|65|[Add Binary](https://oj.leetcode.com/problems/add-binary/)| [C++](./algorithms/addBinary/addBinary.cpp)|Easy|
175175
|64|[Merge Two Sorted Lists](https://oj.leetcode.com/problems/merge-two-sorted-lists/)| [C++](./algorithms/mergeTwoSortedList/mergeTwoSortedList.cpp)|Easy|
176-
|63|[Minimum Path Sum](https://oj.leetcode.com/problems/minimum-path-sum/)| [C++](./algorithms/minimumPathSum/minimumPathSum.cpp)|Medium|
176+
|63|[Minimum Path Sum](https://oj.leetcode.com/problems/minimum-path-sum/)| [C++](./algorithms/minimumPathSum/minimumPathSum.cpp), [Java](./algorithms-java/src/dynamicProgramming/minimumPathSum/minimumPathSum.java)|Medium|
177177
|62|[Unique Paths II](https://oj.leetcode.com/problems/unique-paths-ii/)| [C++](./algorithms/uniquePaths/uniquePaths.II.cpp), [Java](./algorithms-java/src/dynamicProgramming/uniquePaths/uniquePathsII.java)|Medium|
178178
|61|[Unique Paths](https://oj.leetcode.com/problems/unique-paths/)| [C++](./algorithms/uniquePaths/uniquePaths.cpp), [Java](./algorithms-java/src/dynamicProgramming/uniquePaths/uniquePaths.java)|Medium|
179179
|60|[Rotate List](https://oj.leetcode.com/problems/rotate-list/)| [C++](./algorithms/rotateList/rotateList.cpp)|Medium|
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Source : https://oj.leetcode.com/problems/climbing-stairs/
2+
// Inspired by : http://www.jiuzhang.com/solutions/climbing-stairs/
3+
// Author : Lei Cao
4+
// Date : 2015-10-12
5+
6+
/**********************************************************************************
7+
*
8+
* You are climbing a stair case. It takes n steps to reach to the top.
9+
*
10+
* Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
11+
*
12+
*
13+
**********************************************************************************/
14+
15+
package dynamicProgramming.climbStairs;
16+
17+
public class climbStairs {
18+
/**
19+
* @param n: An integer
20+
* @return: An integer
21+
*/
22+
public int climbStairs(int n) {
23+
int[] matrix = new int[n];
24+
if (n < 3) {
25+
return n;
26+
}
27+
matrix[0] = 1;
28+
matrix[1] = 2;
29+
// write your code here
30+
for (int i = 2; i < matrix.length; i++) {
31+
matrix[i] = matrix[i-1] + matrix[i-2];
32+
}
33+
return matrix[n-1];
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package dynamicProgramming.climbStairs;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.*;
6+
7+
/**
8+
* Created by leicao on 12/10/15.
9+
*/
10+
public class climbStairsTest {
11+
12+
@Test
13+
public void testClimbStairs() throws Exception {
14+
int[] inputs = {1,2,3,4};
15+
16+
int[] results = {1,2,3,5};
17+
18+
for (int i = 0; i < results.length; i++) {
19+
climbStairs c = new climbStairs();
20+
int r = c.climbStairs(inputs[i]);
21+
System.out.println(r);
22+
assertEquals(results[i], r);
23+
}
24+
}
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Source : https://oj.leetcode.com/problems/minimum-path-sum/
2+
// Inspired by : http://www.jiuzhang.com/solutions/minimum-path-sum/
3+
// Author : Lei Cao
4+
// Date : 2015-10-12
5+
6+
/**********************************************************************************
7+
*
8+
* Given a m x n grid filled with non-negative numbers, find a path from top left to
9+
* bottom right which minimizes the sum of all numbers along its path.
10+
*
11+
* Note: You can only move either down or right at any point in time.
12+
*
13+
**********************************************************************************/
14+
15+
package dynamicProgramming.minimumPathSum;
16+
17+
public class minimumPathSum {
18+
/**
19+
* @param grid: a list of lists of integers.
20+
* @return: An integer, minimizes the sum of all numbers along its path
21+
*/
22+
public int minPathSum(int[][] grid) {
23+
if (grid.length == 0 || grid[0].length == 0) {
24+
return 0;
25+
}
26+
int m = grid.length;
27+
int n = grid[0].length;
28+
int[][] matrix = new int[m][n];
29+
30+
matrix[0][0] = grid[0][0];
31+
for (int i = 1; i < m; i++) {
32+
matrix[i][0] = grid[i][0] + matrix[i-1][0];
33+
}
34+
35+
for (int i = 1; i < n; i++) {
36+
matrix[0][i] = grid[0][i] + matrix[0][i-1];
37+
}
38+
39+
for (int i = 1; i < m; i++) {
40+
for (int j = 1; j < n; j++) {
41+
matrix[i][j] = grid[i][j] + Math.min(matrix[i-1][j], matrix[i][j-1]);
42+
}
43+
}
44+
45+
return matrix[m-1][n-1];
46+
}
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package dynamicProgramming.minimumPathSum;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.*;
6+
7+
/**
8+
* Created by leicao on 12/10/15.
9+
*/
10+
public class minimumPathSumTest {
11+
12+
@Test
13+
public void testMinPathSum() throws Exception {
14+
int[][][] inputs = {
15+
{
16+
{1,2},
17+
{1,2},
18+
}
19+
};
20+
21+
int [] results = {4};
22+
23+
for (int i = 0; i < results.length; i++) {
24+
minimumPathSum m = new minimumPathSum();
25+
int r = m.minPathSum(inputs[i]);
26+
System.out.println(r);
27+
assertEquals(results[i], r);
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)