标签:div dynamic ott 开始 class min throws unit font
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, given the following triangle.
[ [2], [3,4], [6,5,7], [4,1,8,3] ]
The minimum path sum from top to bottom is 11
(i.e., 2 + 3 + 5 + 1 = 11).
Note:
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.
import java.util.List; public class Triangle { public int minimumTotal(List<List<Integer>> triangle) { int[] A = new int[triangle.size() + 1]; for (int i = triangle.size() - 1; i >= 0; i--) { for (int j = 0; j < triangle.get(i).size(); j++) { A[j] = Math.min(A[j], A[j + 1]) + triangle.get(i).get(j); } } return A[0]; } }
测试代码:
package dynamicPlanning; import org.junit.Test; import java.util.ArrayList; import java.util.List; /** * Created by Feng on 2017/9/11. */ public class TriangleTest { Triangle triangle = new Triangle(); @Test public void minimumTotal() throws Exception { List<Integer> list1 = new ArrayList<>(); list1.add(2); List<Integer> list2 = new ArrayList<>(); list2.add(3); list2.add(4); List<Integer> list3 = new ArrayList<>(); list3.add(6); list3.add(5); list3.add(7); List<Integer> list4 = new ArrayList<>(); list4.add(4); list4.add(1); list4.add(8); list4.add(3); List<List<Integer>> lists = new ArrayList<>(); lists.add(list1); lists.add(list2); lists.add(list3); lists.add(list4); int result = triangle.minimumTotal(lists); //System.out.println(lists.size()); System.out.println(result); } }
标签:div dynamic ott 开始 class min throws unit font
原文地址:http://www.cnblogs.com/lfeng1205/p/7504084.html