File tree Expand file tree Collapse file tree 2 files changed +49
-3
lines changed Expand file tree Collapse file tree 2 files changed +49
-3
lines changed Original file line number Diff line number Diff line change @@ -84,9 +84,6 @@ public int maximalRectangle_error(char[][] matrix) {
84
84
for (int k =i ; k >i -vertical [i +1 ][j +1 ]; k --)
85
85
length = Math .min (length , horizontal [k +1 ][j +1 ]);
86
86
maxa = Math .max (maxa , Math .max (horizontal [i +1 ][j +1 ]*height , vertical [i +1 ][j +1 ]*length )); // logic flaw
87
- if (maxa ==12 ) {
88
- System .out .println (maxa );
89
- }
90
87
}
91
88
92
89
return maxa ;
Original file line number Diff line number Diff line change
1
+ package Triangle ;
2
+
3
+ import java .util .List ;
4
+ import java .util .stream .Collectors ;
5
+
6
+ /**
7
+ * User: Danyang
8
+ * Date: 1/26/2015
9
+ * Time: 23:52
10
+ *
11
+ * Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row
12
+ * below.
13
+
14
+ For example, given the following triangle
15
+ [
16
+ [2],
17
+ [3,4],
18
+ [6,5,7],
19
+ [4,1,8,3]
20
+ ]
21
+ The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).
22
+
23
+ Note:
24
+ Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.
25
+ */
26
+ public class Solution {
27
+ /**
28
+ * dp
29
+ * let f[i][j] represent the minimal path sum from bottom to i, j
30
+ * f[i][j] = min(f[i+1][j], f[i+1][j+1])+t[i][j]
31
+ * @param triangle
32
+ * @return
33
+ */
34
+ public int minimumTotal (List <List <Integer >> triangle ) {
35
+ List <List <Integer >> f = triangle .stream ()
36
+ .map (e -> e .stream ().map (e2 ->0 ).collect (Collectors .toList ()))
37
+ .collect (Collectors .toList ());
38
+ for (int i =0 ; i <triangle .get (triangle .size ()-1 ).size (); i ++) {
39
+ f .get (f .size ()-1 ).set (i , triangle .get (triangle .size ()-1 ).get (i ));
40
+ }
41
+ for (int i =triangle .size ()-2 ; i >-1 ; i --) {
42
+ for (int j =0 ; j <triangle .get (i ).size (); j ++) {
43
+ int min = Math .min (f .get (i +1 ).get (j ), f .get (i +1 ).get (j +1 ))+triangle .get (i ).get (j );
44
+ f .get (i ).set (j , min );
45
+ }
46
+ }
47
+ return f .get (0 ).get (0 );
48
+ }
49
+ }
You can’t perform that action at this time.
0 commit comments