LeetCode 764 最大加号标志[动态规划] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 764 最大加号标志[动态规划] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
一道甚至说不上是动态规划的题目,因为对于每一个点的更新,都和别的点无关,解题思路就是把所有点在四个方向上的最短加号距离计算出来,返回最大的那个,也就是说要遍历四次,用大小(n,n)的数组存每个点四个方向上的最小值,代码如下:

class Solution 
public:
    int orderOfLargestPlusSign(int n, vector<vector<int>>& mines) 
        vector<vector<int>> dp(n, vector<int>(n, n));
        unordered_set<int> banned;
        for (auto &&vec : mines) 
            banned.emplace(vec[0] * n + vec[1]);
        
        int ans = 0;
        for (int i = 0; i < n; i++) 
            int count = 0;
            /* left */
            for (int j = 0; j < n; j++) 
                if (banned.count(i * n + j)) 
                    count = 0;
                 else 
                    count++;
                
                dp[i][j] = min(dp[i][j], count);
            
            count = 0;
            /* right */ 
            for (int j = n - 1; j >= 0; j--) 
                if (banned.count(i * n + j)) 
                    count = 0;
                 else 
                    count++;
                
                dp[i][j] = min(dp[i][j], count);
            
        
        for (int i = 0; i < n; i++) 
            int count = 0;
            /* up */
            for (int j = 0; j < n; j++) 
                if (banned.count(j * n + i)) 
                    count = 0;
                 else 
                    count++;
                
                dp[j][i] = min(dp[j][i], count);
            
            count = 0;
            /* down */
            for (int j = n - 1; j >= 0; j--) 
                if (banned.count(j * n + i)) 
                    count = 0;
                 else 
                    count++;
                
                dp[j][i] = min(dp[j][i], count);
                ans = max(ans, dp[j][i]);
            
        
        return ans;
    
;

以上是关于LeetCode 764 最大加号标志[动态规划] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

九:动态规划-最大的算式

leetcode 最大子序和 动态规划

leetcode-最大子序和(动态规划讲解)

Leetcode.322-零钱兑换(最大/小型动态规划)

Leetcode.322-零钱兑换(最大/小型动态规划)

LeetCode刷题笔记-动态规划-day6