给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。
解析:此题可以运用动态规划解决
设f[i]表示以i为结尾的最大值,g[i]表示以i结尾的最小值,那么
f[i+1] = max{f[i]*arr[i+1], g[i]...
分类:
编程语言 时间:
2015-07-20 19:36:15
阅读次数:
114
对于最优化的子数组问题,一名话,就是从给你的数组中寻找一个子数组,使得它的和是最优的(最大/最小)假如求最大子数组: 如果数组中元素全是正的,那么好办,整个数组的和就是了。 如果数组中元素全是负的,那么也好办,找最小的那个。 但是如果正负相间呢???如上图中,如何求出那个最大的子数组呢?显然我们可以...
分类:
编程语言 时间:
2015-07-17 20:36:05
阅读次数:
179
题意:给一个数组,记数组中出现次数最多的元素出现的次数为这个数组的美丽值,求这个数组长度最短的子数组(要连续),使得该子数组的美丽值与原数组美丽值相等。要求输出子数组的起始和结束位置下标(从1开始)。
也是个水题。每个数最大才10^6,用hash存储每个数出现的次数即可。注意有可能有多个不同的元素出现的次数都相等且为最大,需要一一判断。遍历数组的时候可以用...
分类:
编程语言 时间:
2015-07-15 09:27:20
阅读次数:
131
思路dp很清楚,就是要注意细节。int FindGreatestSumOfSubArray(vector array) { if(array.empty()) return 0; int sum = array[0], tempsum = array[0]; //注意初始...
分类:
编程语言 时间:
2015-07-14 22:22:15
阅读次数:
192
题目:输入一个整型数组,数据元素有正数也有负数,求元素组合成连续子数组之和最大的子数组,要求时间复杂度为O(n)。例如:输入的数组为1, -2, 3, 10, -4, 7, 2, -5,最大和的连续子数组为3, 10, -4, 7, 2,其最大和为18。背景:本题最初为2005年浙江大学计算机系考研...
分类:
编程语言 时间:
2015-07-14 20:07:00
阅读次数:
189
题目描述:
小明是个马大哈,某天他到超市买了若干双筷子(n<20)筷子的长度不尽相同,他把全部筷子都放在购物袋里面拿回家,路上不小心漏了一根
请你用程序帮他找出是漏掉的筷子是多长的。
输入: 剩下的筷子数组,如:1, 2, 3, 2, 1, 3, 2
返回值:漏掉的筷子长度,如上述输入返回:2(当输入的筷子数据异常时返回-1,如:找不到漏掉的筷子)
解题思路:使用HashMap对筷子的种类与数量进行键值对匹配存储,当出现重复筷子时,对应的筷子数量+1,然后遍历一次HashMap,获取筷子的数量,...
分类:
其他好文 时间:
2015-07-13 10:20:23
阅读次数:
225
bool g_InvalidInput = false;
int FindGreatestSumOfSubArray(int *pData, int nLength)
{
if ((pData == NULL) || (nLength
{
g_InvalidInput = true;
return 0;
}
g_InvalidInput = false;
int nCurSum...
分类:
编程语言 时间:
2015-07-09 21:32:12
阅读次数:
246
子数组之和的最大值(二维)问题描述 我们在前面分析了一维数组之和的最大值问题,那么如果是二维数组又该如何分析呢?分析与解法 最直接的方法,当然就是枚举每一个矩形区域,然后再求这个矩形区域中元素的和。【解法一】完整代码如下: 1 package chapter2shuzizhimei.maxsum.....
分类:
编程语言 时间:
2015-07-08 20:50:41
阅读次数:
148
求数组的子数组之和的最大值问题描述分析与解法【解法一】具体代码如下: 1 package chapter2shuzizhimei.maxsumsubarray; 2 /** 3 * 求数组的子数组之和的最大值 4 * 【解法一】 5 * @author DELL 6 * 7 */ 8 pu...
分类:
编程语言 时间:
2015-07-08 12:31:41
阅读次数:
142
题目:输入一个整型数组,数组里有正数也由负数。数组中一个或者连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n)。例如输入的数组为{1,-2,3,10,-4,7,2,-5},其最大的子数组为{3,10,-4,7,2},因此所有子数组的和的最大值为 18。应用动态规划法:...
分类:
编程语言 时间:
2015-07-07 22:44:50
阅读次数:
190