力扣每日一题【算法学习day.131】

前言

###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.用地毯覆盖后的最少白色砖块

题目链接: 2209. 用地毯覆盖后的最少白色砖块 - 力扣(LeetCode)

题面:

附上灵神代码:

java 复制代码
class Solution {
    public int minimumWhiteTiles(String floor, int numCarpets, int carpetLen) {
        int m = floor.length();
        int[][] memo = new int[numCarpets + 1][m];
        for (int[] row : memo) {
            Arrays.fill(row, -1); // -1 表示没有计算过
        }
        return dfs(numCarpets, m - 1, floor.toCharArray(), memo, carpetLen);
    }

    private int dfs(int i, int j, char[] floor, int[][] memo, int carpetLen) {
        if (j < carpetLen * i) { // 剩余砖块可以全部覆盖
            return 0;
        }
        if (memo[i][j] != -1) { // 之前计算过
            return memo[i][j];
        }
        int res = dfs(i, j - 1, floor, memo, carpetLen) + (floor[j] - '0');
        if (i > 0) {
            res = Math.min(res, dfs(i - 1, j - carpetLen, floor, memo, carpetLen));
        }
        return memo[i][j] = res; // 记忆化
    }
}

后言

共勉

相关推荐
橘子1310 小时前
递归,搜索与回溯算法
算法
在路上`10 小时前
前端学习之后端java小白(二)-sql约束/建表
java·sql·学习
我真的是大笨蛋10 小时前
JVM 四大晋升机制
java·jvm
黄贵根10 小时前
C++20 基于文本文件的类对象增删查改系统
算法·c++20
木心爱编程10 小时前
C++20多线程新特性:更安全高效的并发编程
java·jvm·c++20
ljf883810 小时前
Java导出复杂excel,自定义excel导出
java·开发语言·excel
真*小白10 小时前
Python语法学习篇(三)【py3】
开发语言·python·学习
lingggggaaaa10 小时前
小迪安全v2023学习笔记(八十二讲)—— Java组件安全&Solr&Shiro&Log4j&CVE复现
笔记·学习·安全
江流月照10 小时前
PCIE地址空间介绍
java·服务器·网络
max50060010 小时前
使用OmniAvatar-14B模型实现照片和文字生成视频的完整指南
图像处理·人工智能·深度学习·算法·音视频