Interview 150

Triangle

Problem
LC 120
File
interview150_LC120Triangle.java
Path
pkg5leetcode/interview150/interview150_LC120Triangle.java
Package
pkg5leetcode.interview150
Command
java pkg5leetcode/interview150/interview150_LC120Triangle.java
Approach
Bottom-up DP min path sum using next row.
Complexity
Time O(n^2), Space O(n)

LeetCode solutions

There is no in-browser runner. This is the file from the curriculum, unchanged.

pkg5leetcode/interview150/interview150_LC120Triangle.java
1package pkg5leetcode.interview150;2 3/*4 * Triangle | LC 1205 * APPROACH: Bottom-up DP min path sum using next row.6 * COMPLEXITY: Time O(n^2), Space O(n)7 */8public class interview150_LC120Triangle {9    static int minimumTotal(java.util.List<java.util.List<Integer>> triangle) {10        int n = triangle.size();11        int[] dp = new int[n];12        for (int i = 0; i < n; i++) dp[i] = triangle.get(n - 1).get(i);13        for (int r = n - 2; r >= 0; r--) {14            for (int c = 0; c <= r; c++)15                dp[c] = triangle.get(r).get(c) + Math.min(dp[c], dp[c + 1]);16        }17        return dp[0];18    }19 20    public static void main(String[] args) {21        java.util.List<java.util.List<Integer>> t = java.util.Arrays.asList(22            java.util.Arrays.asList(2),23            java.util.Arrays.asList(3, 4),24            java.util.Arrays.asList(6, 5, 7),25            java.util.Arrays.asList(4, 1, 8, 3));26        check(minimumTotal(t) == 11, "case1");27        check(minimumTotal(java.util.Arrays.asList(java.util.Arrays.asList(-10))) == -10, "case2");28        System.out.println("all tests passed");29    }30 31    static void check(boolean cond, String name) {32        if (!cond) throw new AssertionError("FAILED: " + name);33        System.out.println("  PASS " + name);34    }35}