【问题标题】:Leetcode Minimum Path SumLeetcode 最小路径和
【发布时间】:2021-03-22 18:25:32
【问题描述】:

我正在研究一个名为最小路径总和的问题。我已经制定了我的逻辑并发现它是正确的,但是我在代码中遇到了运行时错误。我已经正确搜索但找不到任何错误。这是代码:-

  class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
       int colsize=grid.size();
        int rowsize=grid[0].size();
       for(int i=1;i<rowsize;i++)
       {
           grid[0][i]+=grid[0][i-1];
       }
       for(int i=1;i<colsize;i++)
       {
           grid[i][0]+=grid[i-1][0];
       }

        for(int i=1;i<rowsize;i++)
        {
            for(int j=1;j<colsize;j++)
            {
                grid[i][j]+=min(grid[i-1][j],grid[i][j-1]);
            }
        }
        return grid[rowsize-1][colsize-1];
       
        
    }
};

以及问题的链接 https://leetcode.com/problems/minimum-path-sum/

对于测试用例:-

[[1,2,3],[4,5,6]]

它给出了运行时错误。

【问题讨论】:

  • 你完全改变了你的代码。哪个版本会导致运行时错误?原版还是这个?还是两者兼而有之?
  • @largest_prime_is_463035818 我刚刚对代码的可读性做了一些更改,并更正了行大小和列大小错误。提交时还是一样的错误。
  • 您修复了答案中指出的错误。收到答案后,您不应该更改您的问题以要求其他内容。请不要修复您的问题中的错误。固定代码用于答案
  • @largest_prime_is_463035818 知道了
  • 既然您有一个给出错误的测试用例,为什么还没有调试您的代码?在本地编译this,然后就可以在本地调试了。

标签: c++ dynamic-programming


【解决方案1】:

您的问题后半部分似乎不小心交换了colsizerowsize

        for(int i=1;i<rowsize;i++)
        {
            for(int j=1;j<colsize;j++)
            {
                grid[i][j]+=min(grid[i-1][j],grid[i][j-1]);
            }
        }
        return grid[rowsize-1][colsize-1];

应该是:

        for(int i=1;i<colsize;i++)
        {
            for(int j=1;j<rowsize;j++)
            {
                grid[i][j]+=min(grid[i-1][j],grid[i][j-1]);
            }
        }
        return grid[colsize-1][rowsize-1];

因为colsize作为第一个索引的限制,rowsize作为第二个索引的限制。

【讨论】:

  • 这就是为什么 nm 是可怕的名字
  • @Woodford 已更正
  • @VaibhavAngi 更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 2015-08-19
相关资源
最近更新 更多