【LeetCode: 面试题 17.24. 最大子矩阵 | 动态规划 】

news2025/1/15 7:50:58

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 动态规划
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 面试题 17.24. 最大子矩阵

⛲ 题目描述

给定一个正整数、负整数和 0 组成的 N × M 矩阵,编写代码找出元素总和最大的子矩阵。

返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表右下角的行号和列号。若有多个满足条件的子矩阵,返回任意一个均可。

注意:本题相对书上原题稍作改动

示例:

输入:
[
[-1,0],
[0,-1]
]
输出:[0,1,0,1]
解释:输入中标粗的元素即为输出所表示的矩阵

说明:

1 <= matrix.length, matrix[0].length <= 200

🌟 求解思路&实现代码&运行结果


⚡ 动态规划

🥦 求解思路

  1. 再学习这道题题目之前,大家可以先去看一下另一道最大子数组和的题解,再来学习这道题目就会非常容易。【LeetCode: 53. 最大子数组和 | 暴力递归=>记忆化搜索=>动态规划 | 分治法 】
  2. 我们先来简单理解一下这道题目的意思,这道题目区别于53.最大子数组和最大的不同在于,53题是一维的,但是这道题目是一个升级的版本,是二维的,但是核心的求解内思路是一样的。
  3. 既让说思路是一样的?那么我现在知道怎么求解一个一维数组的方法,但是并不知道二维数组怎么求解?这该怎么办呢?我们直接将二维数组转换为一维数组进性求解即可,怎么转换呢?就是挨个遍历从start开始,到end结束的行,按照列对其进行一个压缩即可。
  4. 然后我们找到最大子矩阵的和,如果当前的子矩阵的和是最大的,我们直接更新,并且抓取矩阵的坐标,最后直接返回即可。
  5. 有了基本的思路,接下来我们就来通过代码来实现一下。

🥦 实现代码

class Solution {
    public int[] getMaxMatrix(int[][] matrix) {
        int m=matrix.length,n=matrix[0].length;
        int r1=0,c1=0,r2=0,c2=0;
        int max=Integer.MIN_VALUE,cur=0;
        for(int i=0;i<m;i++){
            int[] temp=new int[n];
            for(int j=i;j<m;j++){
                int start=0;
                cur=0;
                for(int k=0;k<n;k++){
                    temp[k]+=matrix[j][k];
                    cur+=temp[k];
                    if(cur>max){
                        max=cur;
                        r1=i;
                        c1=start;
                        r2=j;
                        c2=k;
                    }
                    if(cur<0){
                        cur=0;
                        start=k+1;
                    }
                }
            }
        }
        return new int[]{r1,c1,r2,c2};
    }
}

🥦 运行结果

时间复杂度:O(M*M*N)
在这里插入图片描述

空间复杂度:O(N)
在这里插入图片描述

💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/557762.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多模态方法(更新中)

待coding&#xff1a; moco pcl 文章目录 Semantic Representation for Dialogue ModelingPCL: Peer-Contrastive Learning with Diverse Augmentations for Unsupervised Sentence Embeddings深度网络的公理归因 Axiomatic Attribution for Deep NetworksNLU模型的捷径学习行…

面试可以问面试官哪些问题?这些问题需要弄清楚

在参加面试过程中&#xff0c;面试官通常会给你提供询问的机会&#xff0c;让你了解公司、职位和工作环境。在这个过程中&#xff0c;你可以通过提问来更好地了解公司、职位和工作环境&#xff0c;也能够让面试官感受到你对公司的兴趣和热情。那么都有哪些问题我们是有必要进行…

阿里成立AIDC,用“增长”解题国际化

随着阿里巴巴集团2023财年年报的披露&#xff0c;AIDC也随即浮出了水面。 AIDC是阿里国际数字商业集团的英文简称&#xff0c;AIDC即Alibaba International Digital Commerce。阿里是在5月18日公布的截至2023年3月31日的2023财年Q4及全年财报&#xff0c;财报数据之外&#xff…

Windows 11部署WSL(Windows Subsystem for Linux——适用于Windows的Linux子系统)

文章目录 前言一、Windows 11部署WSL&#xff08;Windows Subsystem for Linux&#xff09;1.打开控制面板→程序→启动或关闭 Windows 功能2.勾选 “适用于 Linux 的 Windows 子系统” 和 “虚拟机平台”3.立即重新启动电脑4.按win键或者点击左下角的windows图标打开微软的应用…

Gitee+Jenkins+SonarQube代码上线的实战操作

代码上线-流程图 添加Nexus流程图 机器的环境 172.168.0.1 jenkins # 建议-机器环境&#xff1a;1C以上&#xff0c;2G以上&#xff0c;40G磁盘以上 172.168.0.2 SonarQube # 建议-机器环境&#xff1a;2C以上&#xff0c;4G以上&#xff0c;40G磁盘以上 172.…

面对数字化新技术的变革风口,企业应如何借由技术创新开拓新局,完成数字化转型和升级?

为使企业有效借力科技创新&#xff0c;实现数字化转型升级&#xff0c;企业可以采取以下几个关键步骤&#xff1a; 评估业务目标&#xff1a;首先明确企业的业务目标并确定技术创新可以帮助企业实现这些目标的领域。了解企业当前的挑战、竞争格局和客户需求&#xff0c;以确定数…

Unity:圆底烧瓶中液体液面升降变化的效果

一、效果展示 二、实现的原理 1、从image的filled模式说起 image的filled模式&#xff0c;适合用来做进度条&#xff1a; 2、能否为一个3D object实现一个image filled 的shader &#xff1f; Shader "Custom/FilledImageEffect" {Properties{_MainTex ("…

Qt编程基础 | 第三章-控件 | 3.1、组合框

一、组合框 1.1、定义 QComboBox提供了一种向用户呈现选项列表的方式&#xff0c;以占用最少的屏幕空间。 组合框是一个显示当前项目的选择小部件&#xff0c;可以弹出可选择项目的列表。 组合框可以是可编辑的&#xff0c;允许用户修改列表中的每个项目。 QComboBox 除了显示…

2023款ECMAScript

2023款ECMAScript 新的数组api findLast 反向迭代数组&#xff0c;并返回满足提供的测试函数的第一个元素的值, 如果没有找到返回undefined const isEven (number) > number % 2 0; const numbers [1, 2, 3, 4]; console.log(numbers.findLast(isEven)); // 4 findLastI…

华为战略方法论:BLM模型之市场洞察-五看工具篇(加餐)

欢迎大家继续来到华为战略方法论系列内容。 今天主要介绍一下市场洞察篇的延伸内容 —— 五看工具篇。 在BLM模型中&#xff0c;战略意图篇提到的愿景和目标能否实现&#xff0c;以及怎么实现呢&#xff1f; 要回答这个问题&#xff0c;你就需要从市场上去寻找依据。 企业需…

央国企数字化转型难在哪?为什么要数字化转型?

随着新一轮科技革命和产业变革深入发展&#xff0c;数字化成为央国有企业的必答题。 但就目前情况来看&#xff0c;央国有企业数字化转型还面临着许多挑战&#xff0c;必然是一个长期的过程。 01 央国企数字化转型难在哪&#xff1f; 根据调研数据&#xff0c;中央企业数字化…

linux修改ip地址详解

修改IP地址分为临时修改&#xff08;仍然属于动态分配&#xff09;&#xff0c;和永久修改&#xff08;设置静态ip&#xff09;。临时修改就是使用ifconfig命令直接修改&#xff0c;但是一段时间过后&#xff0c;或者重启又会动态重新分配。而永久修改则是直接将ip写在配置文件…

jenkins自动化部署

jenkins自动化部署 jenkins官网安装步骤 1. 安装环境 安装Java运行环境。Jenkins需要Java运行环境才能正常工作。您可以从Oracle官网下载Java运行环境并安装&#xff0c;或者使用您操作系统自带的Java运行环境。 sudo wget -O /etc/yum.repos.d/jenkins.repo \https://pkg.…

品牌在线上的困境

大家好&#xff01; 我是小鱼 目前&#xff0c;在我们国内 有很多品牌从传统的 门店转为线上经营 那是不是意味着 品牌公司要把自己 的实体门店都关了呢? 并不是那样的。 很多品牌实现了 线上门店和实体门店 相结合的方式来 改造升级的 那么他们是如何做到的呢&#xff1f; 对…

存储框架封装:LruCacheUtils+DiskLruCacheUtils+责任链设计模式+DeepLink

存储框架封装:LruCacheUtilsDiskLruCacheUtils责任链设计模式DeepLink 一.存储框架实现思路&#xff1f;1.缓存策略2.LRU算法3.LruCache内存缓存原理4.DiskLruCache磁盘缓存原理5.使用单例模式实现LRUCacheUtils5.使用单例模式实现DiskLRUCacheUtils 二.什么是责任链设计模式&a…

ASP.NET Core 使用Filter和Redis实现接口防重

背景 日常开发中&#xff0c;经常需要对一些响应不是很快的关键业务接口增加防重功能&#xff0c;即短时间内收到的多个相同的请求&#xff0c;只处理一个&#xff0c;其余不处理&#xff0c;避免产生脏数据。 这和幂等性&#xff08;idempotency&#xff09;稍微有点区别&am…

凌恩生物文献分享 | 16S全长扩增子+代谢组/转录组多组学!高分paper的绝佳拍档!

16S全长扩增子联合代谢组/转录组多组学研究&#xff0c;是目前微生态研究趋势。单一研究方法较难发表高水平文章&#xff0c;多组学关联研究逐渐成为“快速”发表高分paper的绝佳拍档&#xff01; 小编精心挑选了3篇医学微生态研究的高分文章&#xff0c;希望能帮助大家激发科…

二线程序员的出路

最近长沙不太平。去年被动离职一拨人之后&#xff0c;HR一直强调降本增效&#xff0c;人人自危&#xff0c;挤走一拨人&#xff0c;反正会有大量内卷失败的一线程序员进来填坑。当然留就有人走&#xff0c;前同事除了几个出去搞培训创业&#xff08;后面解散了&#xff09;的之…

chatgpt赋能Python-python_for_倒序

Python的倒序功能 - 从SEO角度分析 在Web开发中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;是一个关键的指标。如果你的网站能够被搜索引擎高效地索引&#xff0c;它就会排在搜索结果的前面&#xff0c;带来更多的流量和曝光率。Python&#xff0c;作为一种广泛应用…

【LED子系统】七、触发器实现

个人主页&#xff1a;董哥聊技术 我是董哥&#xff0c;高级嵌入式软件开发工程师&#xff0c;从事嵌入式Linux驱动开发和系统开发&#xff0c;曾就职于世界500强公司&#xff01; 创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01; 文章目录…