• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
村雨sup
自己选的路,跪着也要走完 XD
博客园    首页    新随笔    联系   管理    订阅  订阅
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;
    }
};

_

posted on 2019-02-08 10:58  村雨sup  阅读(106)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3