(一)一维最大连续子数组和 源码: #include<iostream> #include<cstdio> using namespace std; const int N=100000; int main() { int i,j,k; int a[N]; int sum[N]; int n; pr ...
分类:
编程语言 时间:
2020-07-05 10:48:12
阅读次数:
68
题目描述:一次股票交易包含买入和卖出,只进行一次交易,求最大收益。 只要记录前面的最小价格,将这个最小价格作为买入价格,然后将当前的价格作为售出价格,查看当前收益是不是最大收益。 主要解题思路是转换成求最大连续子数组,整理了三个解法,单调栈我是没有想到的。。 常规解: 1. class Soluti ...
分类:
其他好文 时间:
2020-04-16 10:34:17
阅读次数:
97
之前在其他博客看到了,但是算法的关键部分完全看不懂为什么要这么做,直到最近上算法课,才终于知道到底怎么来的。 问题描述: 给出一个数组,求其最大连续子数组和 例:数组{1,2,3,4,-5,10,-1,-1}的最大连续子数组和是子数组{1,2,3,4,-5,10}的和15 算法过程: 这个算法能从零 ...
分类:
编程语言 时间:
2019-10-28 00:26:03
阅读次数:
137
1.题目要求 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[ ...
分类:
编程语言 时间:
2019-04-20 00:15:02
阅读次数:
186
【题目】最大连续子数组和(最大子段和) 背景 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为:Max{0,a[i]+a[i+1]+… ...
分类:
编程语言 时间:
2019-04-18 20:04:13
阅读次数:
209
前言最近工作不是特别忙,所以有更多时间来学习算法相关知识,补短处。题目来源于leetcode,通过一个算法题,我们去分析该算法题所属类型,以及解题思路,以及该算法题所用到的数学知识。选择的算法题目从容易到困难,逐步提高难度,解题的思路也是从简单到复杂,时间复杂度也是从低到高的顺序来书写这个系列的博客。因工作语言和使用熟练度原因算法采用Java编写,但该系列中可能会穿插c、C++、python语言实
分类:
编程语言 时间:
2019-02-21 11:06:26
阅读次数:
223
求最大连续子数组和问题 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
设计思想: 首先定义一个求最大连续子数组和的函数,然后在主函数中向数组中输入元素并调用该函数。 函数的设计思想为:首先定义一个返回的最大值max,以及一个临时存放子数组和的变量temp,然后通过循环语句实现子数组和最大值的存储和更新。最后返回最大值。 出现的问题及解决方案: 当数组元素为负数的时候, ...
分类:
编程语言 时间:
2018-10-14 16:46:06
阅读次数:
180
设计思想: 首先定义一个求最大连续子数组和的函数,然后在主函数中向数组中输入元素并调用该函数。 函数的设计思想为:首先定义一个返回的最大值max,以及一个临时存放子数组和的变量temp,然后通过循环语句实现子数组和最大值的存储和更新。最后返回最大值。 出现的问题及解决方案: 当数组元素为负数的时候, ...
分类:
编程语言 时间:
2018-10-14 16:41:40
阅读次数:
163
这两道题是我在面试中亲身经历的,在面试滴滴的过程中,我遇到过最大子数组和,在面试阿里的过程中,我遇到过最长重复子串。 1. 最大子数组和 比如,给定一个数组, 1, -2, 3, -4, 5, 6, -7 应该输出, 11。 2. 最长重复子串 比如,给定一个字符串, "hello, my name ...
分类:
编程语言 时间:
2018-08-10 23:15:28
阅读次数:
210