zoukankan      html  css  js  c++  java
  • Leetcode 120

    class Solution {
    public:
        int minimumTotal(vector<vector<int>>& triangle) {
            if(triangle.size() == 1) return triangle[0][0];
            triangle[1][0] += triangle[0][0];triangle[1][1] += triangle[0][0];
            if(triangle.size() == 2) return min(triangle[1][0],triangle[1][1]);
            int a = min(triangle[1][0],triangle[1][1]);
            for(int i=0;i < 2;i++){
                triangle[2][i] += a;
            }
            triangle[2][2] += triangle[1][1];
            for(int i=3;i < triangle.size();i++){
                triangle[i][0] += min(triangle[i-1][0],triangle[i-1][1]);
                for(int j=1;j < triangle[i].size()-2;j++){
                    int x = min(triangle[i-1][j-1],triangle[i-1][j]);
                    int y = min(x,triangle[i-1][j+1]);
                    triangle[i][j] += y;
                }
                triangle[i][triangle[i].size()-2] += min(triangle[i-1][triangle[i].size()-2],triangle[i-1][triangle[i].size()-3]);
                triangle[i][triangle[i].size()-1] += triangle[i-1][triangle[i].size()-2];
            }
            return findmin(triangle[triangle.size()-1]);
        }
        int findmin(vector<int> temp){
            int minnum = temp[0];
            for(int i=1;i < temp.size();i++){
                if(minnum > temp[i]) minnum = temp[i];
            }
            return minnum;
        }
    };

    ——题意没写清楚,相邻是左中右还是中右,WA了一发

    class Solution {
    public:
        int minimumTotal(vector<vector<int>>& triangle) {
            if(triangle.size() == 1) return triangle[0][0];
            triangle[1][0] += triangle[0][0];triangle[1][1] += triangle[0][0];
            for(int i=2;i < triangle.size();i++){
                triangle[i][0] += triangle[i-1][0];
                for(int j=1;j < triangle[i].size()-1;j++){
                    triangle[i][j] += min(triangle[i-1][j-1],triangle[i-1][j]);
                }
                triangle[i][triangle[i].size()-1] += triangle[i-1][triangle[i].size()-2];
            }
            return findmin(triangle[triangle.size()-1]);
        }
        int findmin(vector<int> temp){
            int minnum = temp[0];
            for(int i=1;i < temp.size();i++){
                if(minnum > temp[i]) minnum = temp[i];
            }
            return minnum;
        }
    };

    _

  • 相关阅读:
    【Java】+Lombok
    【Java】【陷阱】toString() 再也不用了
    【Excel】获取一列的有效行数
    【Excel】同一个表格 不同sheet表之间数据关联
    【Excel】+ 高亮显示当前单元格所在的行与列
    【Java】获取类中所有的方法
    捕获子线程中的异常
    Kafka documentation PDF
    Spring java8 LocalDatetime 格式化
    OneDrive同步文件夹不显示绿色对勾
  • 原文地址:https://www.cnblogs.com/cunyusup/p/10355954.html
Copyright © 2011-2022 走看看