| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2414 人关注过本帖
标题:做LeetCode时遇到的问题
只看楼主 加入收藏
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
结帖率:82.35%
收藏
 问题点数:0 回复次数:3 
做LeetCode时遇到的问题
做LeetCode的 minimum Path Sum 时,在codeBlock上可以成功运行,但是在LeetCode上
为什么会time limit exceeded?
我尝试了下Debug code in playground ,结果run code时 一直显示在 runing。
是我写的代码效率达不到要求吗?

下面附上题目:
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time
Example 1:
        [[1,3,1],
         [1,5,1],
         [4,2,1]]
Given the above grid map, return 7. Because the path 1→3→1→1→1 minimizes the sum.
程序代码:
//my solution:
#define INF_MAX 100000000;
class Solution {
public:
    int minPathSum(vector<vector<int> >& grid) {
        if( grid.empty() ) return 0;
        int minV=INF_MAX;
        int sum=0;
        searchPath(grid,0,0,grid.size()-1,grid[grid.size()-1].size()-1,
                 sum,minV);
        return minV;
    }
    void searchPath(vector<vector<int> >& grid,
                 int startLine,int startRow,
                 const int& endLine,const int& endRow,
                 int sum,int& minV){
        if(startLine==endLine && startRow==endRow){
            minV=( minV > sum+grid[startLine][startRow] )?sum+grid[startLine][startRow]:minV;
            return ;
        }
        if(grid[startLine][startRow] == -1)
            return ;
        int temp=grid[startLine][startRow];
        if(startLine+1 <= endLine && sum+temp+grid[startLine+1][startRow] <= minV)
            searchPath(grid,startLine+1,startRow,endLine,endRow,sum+temp,minV);
        if(startRow+1 <= endRow && sum+temp+grid[startLine][startRow+1] <= minV)
            searchPath(grid,startLine,startRow+1,endLine,endRow,sum+temp,minV);
    }
};

图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2018-2-27 12:20编辑过]

搜索更多相关主题的帖子: Sum grid int return temp 
2018-02-27 11:47
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
收藏
得分:0 
我知道了确实是效率问题
not efficient enough..
2018-02-27 12:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
你应该贴原始链接:https://

你的算法是不是中间结果重复运行多次了
程序代码:
    int minPathSum( vector<vector<int>>& grid )
    {
        for( size_t r=0; r!=grid.size(); ++r )
            for( size_t c=0; c!=grid[r].size(); ++c )
                if( r==0 && c==0 )
                    ;
                else if( r == 0 )
                    grid[r][c] += grid[r][c-1];
                else if( c == 0 )
                    grid[r][c] += grid[r-1][c];
                else
                    grid[r][c] += min( grid[r-1][c], grid[r][c-1] );
        return grid.back().back();
    }



程序代码:
    int minPathSum( vector<vector<int>>& grid )
    {
        for( size_t c=1; c!=grid[0].size(); ++c )
            grid[0][c] += grid[0][c-1];
        for( size_t r=1; r!=grid.size(); ++r )
            grid[r][0] += grid[r-1][0];
        for( size_t r=1; r!=grid.size(); ++r )
            for( size_t c=1; c!=grid[r].size(); ++c )
                grid[r][c] += min( grid[r-1][c], grid[r][c-1] );
        return grid.back().back();
    }

2018-02-27 12:49
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
收藏
得分:0 
回复 3楼 rjsp
谢谢
2018-02-27 14:24
快速回复:做LeetCode时遇到的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028777 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved