triangle

题目:牛客网

解题思路:

链接:https://www.nowcoder.com/questionTerminal/2b7995aa4f7949d99674d975489cb7da?f=discussion
来源:牛客网
注意观察前后2行的位置关系 triangle[i][j]=min(triangle[i+1][j], triangle[i+1][j+1])+triangle[i][j]

给定一个三角形,找出从顶到底的最小路径和,每一步可以从上一行移动到下一行相邻的数字

    [                   

         [2],            [2],              

        [3,4],           [3, 4],         [2],

       [6,5,7],      ==>   [7, 6, 10]     ==>  [9, 10]   ==>   [11]

      [4,1,8,3]

    ]

import java.util.ArrayList;
public class Solution {
    public int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {
        int level = triangle.size();
        for(int i = level-2; i >= 0 ; i--){
        	int len = triangle.get(i).size();
        	for(int j =0; j < len ; j++){
        		int first = triangle.get(i).get(j)+triangle.get(i+1).get(j);
        		int second = triangle.get(i).get(j)+triangle.get(i+1).get(j+1);
        		int minnum = Math.min(first, second);
        		triangle.get(i).set(j, minnum);
        	}
        	
        }
        return triangle.get(0).get(0);
    }
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值