力扣 动态规划 44、通配符匹配 85、最大矩形

44、通配符匹配


这个题目很明显是一个动态规划



我最开始写的代码是

result[i][j]=p.charAt(j-1)!='*'?result[i-1][j-1] && (s.charAt(i-1)==p.charAt(j-1) || p.charAt(j-1)=='?'):
                        result[i-1][j-1] || result[i-1][j];

与正确答案的区别是 p.chatAt(j-1)==''时 result[i-1][j-1] || result[i-1][j]
正确答案是 result[i][j-1] || result[i-1][j]
我的意思是 p.chatAt(j-1)=='
'时,参考棋盘的斜着的左前方和上方
答案的意思是参考棋盘的左方和上方
为什么是左方,左方代表了代表任何的字符的情况,上方代表了为‘’(空)的情况、、、、
所以是分析出来的,不要自己乱写、、、、

class Solution {
    public boolean isMatch(String s, String p) {
        if(p.equals("*")) return true;
        int sLength = s.length();
        int pLength = p.length();
        boolean[][] result=new boolean[sLength+1][pLength+1];
        result[0][0]=true;
        for (int i = 1; i < pLength + 1; i++) {
            result[0][i]=p.charAt(i-1)=='*' && result[0][i-1]==true?true:false;
        }
        for (int i = 1; i < sLength+1; i++) {
            for (int j = 1; j < pLength+1; j++) {
                result[i][j]=p.charAt(j-1)!='*'?result[i-1][j-1] && (s.charAt(i-1)==p.charAt(j-1) || p.charAt(j-1)=='?'):
                        result[i][j-1] || result[i-1][j];
            }
        }
        return result[sLength][pLength];
    }
}

85、最大矩形


这个题目我很想用回溯去处理,但是回溯的时间复杂度又非常的高,肯定不太行,力扣算法分类又给它分到了动态规划里,想破脑子也没想明白这个动态规划要记录个啥子
一看答案,好像也没啥人用动态规划,力扣,你个沙雕

明天再写吧,今天好累、、、又是卖命还没啥报酬的一天、、、、

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容