自学内容网 自学内容网

Leetcode—329. 矩阵中的最长递增路径【困难】

2024每日刷题(165)

Leetcode—329. 矩阵中的最长递增路径

在这里插入图片描述

dfs + dp实现代码

class Solution {
public:
    int longestIncreasingPath(vector<vector<int>>& matrix) {
        // 9  9  4
        // 6  6  8
        // 2  1  1

        // 1  1  2
        // 2  2  1
        // 3  4  2

        int m = matrix.size();
        int n = matrix[0].size();
        vector<vector<int>> memo(m, vector<int>(n, 0));

        function<int(int, int, int)> dfs = [&](int i, int j, int pre) -> int {
            // out of boundary
            if(i < 0 || i == m || j < 0 || j == n) {
                return 0;
            }

            const int cur = matrix[i][j];
            if(cur <= pre) {
                return 0;
            }

            int &ans = memo[i][j];
            if(ans > 0) {
                return ans;
            }

            ans = 1 + max({
                dfs(i, j + 1, cur), dfs(i, j - 1, cur), dfs(i + 1, j, cur), dfs(i - 1, j, cur)
            });
            return ans;
        };
        
        int ans = 0;
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                ans = max(ans, dfs(i, j, -1));
            }
        }
        return ans;
    }
};

运行结果

在这里插入图片描述
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!


原文地址:https://blog.csdn.net/qq_44631615/article/details/142452039

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!