LeetCode //C - 120. Triangle

120. Triangle

Given a triangle array, return the minimum path sum from top to bottom.

For each step, you may move to an adjacent number of the row below. More formally, if you are on index i on the current row, you may move to either index i or index i + 1 on the next row.
 

Example 1:

Input: triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
Output: 11
Explanation: The triangle looks like:
     2
    3 4
  6 5 7
 4 1 8 3
The minimum path sum from top to bottom is 2 + 3 + 5 + 1 = 11 (underlined above).

Example 2:

Input: triangle = [[-10]]
Output: -10

Constraints:
  • 1 <= triangle.length <= 200
  • triangle[0].length == 1
  • triangle[i].length == triangle[i - 1].length + 1
  • − 1 0 4 < = t r i a n g l e [ i ] [ j ] < = 1 0 4 -10^4 <= triangle[i][j] <= 10^4 104<=triangle[i][j]<=104

From: LeetCode
Link: 120. Triangle


Solution:

Ideas:
  1. Start from the second last row of the triangle.
  2. For each element in this row, add the smaller of the two adjacent numbers from the row below.
  3. Repeat this process up to the top of the triangle.
  4. The top element of the triangle will now contain the minimum path sum.
Code:
int minimumTotal(int** triangle, int triangleSize, int* triangleColSize) {
    // Starting from the second last row and moving upwards
    for (int i = triangleSize - 2; i >= 0; i--) {
        for (int j = 0; j < triangleColSize[i]; j++) {
            // Adding the minimum of the two adjacent numbers from the row below
            triangle[i][j] += (triangle[i+1][j] < triangle[i+1][j+1]) ? triangle[i+1][j] : triangle[i+1][j+1];
        }
    }
    // The top element now contains the minimum path sum
    return triangle[0][0];
}

你可能感兴趣的:(LeetCode,leetcode,c语言,算法)