zoukankan      html  css  js  c++  java
  • triangle

    
    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 is11(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.
    int minimumTotal(vector<vector<int> > &triangle) {
            int n = triangle.size();
            int res = 1e8;
            if(n==1)
            {
                res = triangle[0][0];
            }
            for(int i = 1; i < n;i++){
                for(int j = 0;j <= i;j++){
                if(j == 0){
                   triangle[i][j] = triangle[i][j]+triangle[i-1][j]; 
                }else if(i == j){
                   triangle[i][j] = triangle[i][j]+triangle[i-1][j-1];
                }
                else{
                    triangle[i][j] = triangle[i][j]+min(triangle[i-1][j],triangle[i-1][j-1]);
                }
                if(i == n-1){
                    res = min(res,triangle[i][j]);
                }
                }
            }
            return res;
        }

    后退法:

     int minimumTotal(vector<vector<int> > &triangle) {
            
            int n = triangle.size();
            for(int i = n-2;i >= 0;i-- ){
                for(int j = 0;j<=i;j++){
                    triangle[i][j] = triangle[i][j]+min(triangle[i+1][j],triangle[i+1][j+1]);
                }
            }
            return triangle[0][0];
        }
  • 相关阅读:
    iperf使用
    性能工具--vtune
    Android广告轮播图实现
    自定义控件学习——下拉刷新ListView
    JVM读书笔记
    自定义控件学习——仿qq侧滑栏
    初步使用RecyclerView实现瀑布流
    自定义Toast
    自定义对话框加状态选择器
    自定义组合控件
  • 原文地址:https://www.cnblogs.com/lyf-sunicey/p/8430713.html
Copyright © 2011-2022 走看看