题目 输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},因此输出为该子数组的和18。 思路 一般解法 动态规划 ...
分类:
编程语言 时间:
2019-01-08 15:19:57
阅读次数:
197
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。 返回滑动窗口最大值 其实这道题就是求给定数组中获取全部K个连续元素中最大值的集合 首先我们可能会遇到三中情况 当原始数组为空的,那就直接返回一个空 ...
分类:
其他好文 时间:
2018-12-14 01:06:23
阅读次数:
201
最大连续子矩阵算法 暴力求解不可取 或许可以从 "O(n)复杂度内求解最大连续子数组的算法" 得到灵感 O(n2)复杂度求最大连续子矩阵和算法: 1. 创建一个新矩阵sum,sum[i][j]存放sun[i][0 j]的和 2. 每个候选矩阵由左上角matrix[i][j]和右下角的元素matrix ...
分类:
编程语言 时间:
2018-12-11 00:38:20
阅读次数:
176
求最大连续子数组和问题 sample input: -1,4,-3,6,-20,4,-2,5 sample output: 7 最容易想到的就是暴力解决方法,穷举所有连续子数组的可能性,进行比较,复杂度O(n2) 代码略 复杂度为O(n)的算法: 输出结果为“max sum of submatrix ...
分类:
编程语言 时间:
2018-12-10 15:36:49
阅读次数:
181
这道题是一道我认为非常好的题,它让我初步认识了动态规划思想。先看一下题目描述: 无序的数组中找到一个具有最大和的连续子数组,返回值是和,这道题有许多种解法,但是我思考了20分钟也没有写出来,这篇文章重点说一下用动态规划来解这道题,分治思想另篇说起,先上代码: 非常唯美的代码。简洁明了,这里用到了dp ...
分类:
其他好文 时间:
2018-11-22 18:13:22
阅读次数:
181
给定一个数组,求它的一个子数组,使其求和最大。 这个问题的应用:给定一只股票很多天的价格,计算从哪天买进哪天卖出能获得最大利润。 给定 prices:100 113 98 87 65 78 120 110 115 计算delta delta: 13 -15 -11 -22 13 42 -10 5 求 ...
分类:
编程语言 时间:
2018-10-28 14:58:47
阅读次数:
253
给定一个含有 n 个正整数的数组和一个正整数 s , 找出该数组中满足其和 ≥ s 的长度最小的连续子数组 。 如果不存在符合条件的连续子数组,返回 0。 示例: 进阶: 如果你已经完成了 O ( n ) 时间复杂度的解法, 请尝试 O ( n log n ) 时间复杂度的解法。 思路 滑动窗口法, ...
分类:
编程语言 时间:
2018-10-26 22:25:24
阅读次数:
376
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 O(n)复杂度: ...
分类:
其他好文 时间:
2018-10-24 01:00:00
阅读次数:
152
设计思路: 首先定义一个四行四列的二维数组通过两个子函数实现,一个求一维最大子数组和,一个求相应列下标二维元素相加和并作比较1.通过上次的一位数组求最大值,可以先求出每一行最大连续子数组的和2.记下上下边界元素的下标3.每一行都有一个最大子数组,将它对应的相同列下标的元素相加,得到i个子数组和存到一 ...
分类:
编程语言 时间:
2018-10-21 19:38:23
阅读次数:
155
设计思路:首先定义一个四行四列的二维数组通过两个子函数实现,一个求一维最大子数组和,一个求相应列下标二维元素相加和并作比较1.通过上次的一位数组求最大值,可以先求出每一行最大连续子数组的和2.记下上下边界元素的下标3.每一行都有一个最大子数组,将它对应的相同列下标的元素相加,得到i个子数组和存到一个 ...
分类:
编程语言 时间:
2018-10-21 19:37:17
阅读次数:
157