数据结构与算法之LeetCode-1289-下降路径最小和II 使用 动态规划

49 篇文章 0 订阅
35 篇文章 0 订阅

1289. 下降路径最小和 II - 力扣(LeetCode)

hard

  • 动态规划

    • f[i][j] = f[i - 1][jmin[i - 1]] + arr[i][j]    其中 j != jmin[i - 1]
      f[i][j] = f[i - 1][jnext[i - 1]] + arr[i][j]   其中 j == jmin[i - 1]
      f[0][j] = arr[0][j]
      
    • 简化

    • f[i][j] = first_sum + arr[i][j]    其中 j != first_pos
      f[i][j] = second_sum + arr[i][j]   其中 j == first_pos
      
function minFallingPathSum(arr){
  let n = arr.length;
  
  let first_sum = 0, // max
      first_pos = -1,
      second_sum = 0; // second max
  for(let i=0;i<n;++i){
    let fs = Integer.MAX_VALUE, fp = -1, ss = Integer.MAX_VALUE;
    for(let j=0;j<n;++j){
      let cur_sum = (first_pos!=j?first_sum:second_sum)+arr[i][j];
      if(cur_sum<fs){
        ss = fs
        fs = cur_sum;
        fp = j;
      }else if(cur_sum<ss){
      	ss = cur_sum;
      }
    }
    first_sum = fs
    first_pos = fp
    second_sum = ss
  }
  return first_sum
}

执行结果:通过

执行用时:68 ms, 在所有 JavaScript 提交中击败了96.00%的用户

内存消耗:43.7 MB, 在所有 JavaScript 提交中击败了92.00%的用户

通过测试用例:16 / 16

参考链接

1289. 下降路径最小和 II - 力扣(LeetCode)

下降路径最小和 II - 下降路径最小和 II - 力扣(LeetCode)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值