九章算法面试题12 最大子区间/矩阵
来源:互联网 发布:新闻app源码 编辑:程序博客网 时间:2024/06/03 02:38
九章算法官网-原文网址
http://www.jiuzhang.com/problem/12/
题目
初阶:数组A中有N个数,需要找到A的最大子区间,使得区间内的数和最大。即找到0<=i<=j<N,使得A[i]+A[i+1] … + A[j]最大。A中元素有正有负。
进阶:矩阵A中有N*N个数,求A的最大的子矩阵。
解答
初阶:设Sum[i] = 前i个数的和,Min[i] = min{Sum[1], Sum[2] … Sum[i-1]}。从左到右枚举i,计算Sum[i]-Min[i]的最大值,即为答案。时间复杂度O(n),空间复杂度O(1),只需要在枚举的过程中记录一个Sum,一个Min和一个全局答案的Max即可。
进阶:枚举最大子矩阵的上下边界x和y,将第x行到第y行每一列的数叠加成为一个数。然后就成为了一个初阶的问题。时间复杂度O(n^3)。
面试官角度
初阶问题有若干种解法,上面给出的是枚举的方法。一种贪心的方法是,累加Sum的过程中,如果Sum<0,就让Sum=0(意味着之前的数不如不取,所以全部扔掉)。进阶的问题主要是考察是否能将其简化为初阶的问题来解决。其中进阶问题一般会考察程序实现,需要进行练习 0 0
- 九章算法面试题12 最大子区间/矩阵
- 九章算法面试题43 直方图内最大矩阵
- 九章算法面试题29 子矩阵的最大公约数
- 九章算法面试题31 子数组的最大差
- 九章算法面试题77 插入区间
- 九章算法面试题85 搜索区间
- [各种面试题] 最大子矩阵和
- 腾讯面试题(九度)——面积最大的全1子矩阵
- 九章算法面试题11 递增矩阵
- 九章算法面试题76 搜索二维矩阵
- 九章算法面试题27 最大连续子集
- 九章算法面试题35 构造最大数
- 九章算法面试题34 最长01子串
- 九章算法面试题34 最长01子串
- 九章算法面试题87 最小子数组
- 算法面试题——直方图内最大矩阵
- 九章算法面试题45 寻找最大的储水容器
- 【面试题之算法部分】最大和连续子数组
- PowerDesigner15.1使用技巧(二)--如何找到官方资源
- Spring MVC之@RequestBody, @ResponseBody 详解
- 表格
- 我的理想,我的奋斗目标
- 美团推荐算法实践:机器学习重排序模型成亮点
- 九章算法面试题12 最大子区间/矩阵
- mysql的基本操作
- 1393 - Highways(问题抽象)(容斥原理计数)
- Bean作用域的配置以及 Spring各种注入方式实例 list set map props
- eclipse maven mahout环境搭建
- 我是如何做原型设计的
- Bluemix云平台实践:DevOps
- Android---38---SQLiteOpenHelper类
- 九章算法面试题13 随机数生成器