力扣动态规划-23【算法学习day.117】

前言

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


习题

1.矩阵的最大非负积

题目链接: 1594. 矩阵的最大非负积 - 力扣(LeetCode)

题面:

附上大佬代码:

java 复制代码
class Solution {
    public int maxProductPath(int[][] grid) {
        final int MOD = 1000000000 + 7;
        int m = grid.length, n = grid[0].length;
        // 初始化 maxgt 和 minlt 数组,保存第一行的值
        long[] maxgt = new long[n];
        long[] minlt = new long[n];
        maxgt[0] = minlt[0] = grid[0][0];
        // 初始化第一的 maxgt 和 minlt
        for (int i = 1; i < n; i++) {
            maxgt[i] = maxgt[i - 1] * grid[0][i];
            minlt[i] = minlt[i - 1] * grid[0][i];
        }
        // 从第二行开始处理
        for (int i = 1; i < m; i++) {
            // 更新第一列的 maxgt 和 minlt
            maxgt[0] *= grid[i][0];
            minlt[0] *= grid[i][0];
            for (int j = 1; j < n; j++) {
                if (grid[i][j] >= 0) {
                    maxgt[j] = Math.max(maxgt[j], maxgt[j - 1]) * grid[i][j];
                    minlt[j] = Math.min(minlt[j], minlt[j - 1]) * grid[i][j];
                } else {
                    long tempMax = maxgt[j]; // 暂存当前值
                    maxgt[j] = Math.min(minlt[j], minlt[j - 1]) * grid[i][j];
                    minlt[j] = Math.max(tempMax, maxgt[j - 1]) * grid[i][j];
                }
            }
        }
        // 最终结果为右下角的 maxgt
        if (maxgt[n - 1] < 0) {
            return -1;
        } else {
            return (int) (maxgt[n - 1] % MOD);
        }
    }
}

后言

上面是动态规划相关的习题,共勉

相关推荐
wuweijianlove10 分钟前
算法性能的渐近与非渐近行为对比的技术4
算法
一定要AK13 分钟前
Spring 入门核心笔记
java·笔记·spring
A__tao14 分钟前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
_dindong18 分钟前
cf1091div2 C.Grid Covering(数论)
c++·算法
AI成长日志18 分钟前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
KevinCyao27 分钟前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
迷藏49434 分钟前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
黎阳之光1 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
skywalker_111 小时前
力扣hot100-3(最长连续序列),4(移动零)
数据结构·算法·leetcode
6Hzlia1 小时前
【Hot 100 刷题计划】 LeetCode 17. 电话号码的字母组合 | C++ 回溯算法经典模板
c++·算法·leetcode