1.描述:找出数组A的和最大的非空连续子数组,我们称这样的连续子数组为最大子数组。 2. 用分治策略来求解。 a. 假设我们要求A的子数组A[low, high]的最大子数组。根据分治策略,我们先将A[low,high] 平分 b. 那么 A[low,highj]的子数组A[i,j]只有三种可能 a ...
分类:
编程语言 时间:
2018-09-02 20:20:33
阅读次数:
186
最大子数组问题 本文只是做一个记录,更细致的思路请查看算法导论 最大子数组结构体 暴力求解 计算所有的数组区间的和进而得到最大的子数组,算法复杂度为θ(n2)。这种方法在小规模的数据表现很好,d但是在大规模数据中则很糟糕,但可用作分治算法的改进。实现的思路是先计算从以 为起始的最大子数组,然后从[1 ...
分类:
编程语言 时间:
2018-09-01 21:49:20
阅读次数:
212
#include "stdafx.h"//暴力法求最大子数组和问题int _tmain(int argc, _TCHAR* argv[]){ int A[8] = { -6, 10, -5, -3, -7, -1, -1 }; int array_length = sizeof(A) / sizeo ...
分类:
编程语言 时间:
2018-08-13 21:01:13
阅读次数:
161
只有当数组中包含负数时,最大子数组问题才有意义。如果所有元素都是非负的,最大子数组问题没有任何意义,因为整个数组和肯定是最大的 ...
分类:
编程语言 时间:
2018-08-12 17:33:42
阅读次数:
128
这两道题是我在面试中亲身经历的,在面试滴滴的过程中,我遇到过最大子数组和,在面试阿里的过程中,我遇到过最长重复子串。 1. 最大子数组和 比如,给定一个数组, 1, -2, 3, -4, 5, 6, -7 应该输出, 11。 2. 最长重复子串 比如,给定一个字符串, "hello, my name ...
分类:
编程语言 时间:
2018-08-10 23:15:28
阅读次数:
210
Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum. Example: Foll ...
分类:
编程语言 时间:
2018-06-21 11:32:42
阅读次数:
144
1 struct A 2 { 3 int maxright; // 记录右边最大子数组的下标 4 int maxleft; // 记录左边最大子数组的下标 5 int sum; // 记录数组下标maxleft--maxright的元素和 6 }; 7 8 void Solution... ...
分类:
编程语言 时间:
2018-06-13 01:00:36
阅读次数:
167
原题网址:https://www.lintcode.com/problem/maximum-subarray-difference/description 描述 给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大。 返回这个最大的差值。 ...
分类:
编程语言 时间:
2018-05-25 00:24:39
阅读次数:
221
使用动态规划 F(i):以array[i]为末尾元素的子数组的和的最大值,子数组的元素的相对位置不变 F(i)=max(F(i-1)+array[i] , array[i]) res:所有子数组的和的最大值 res=max(res,F(i)) F(i):以array[i]为末尾元素的子数组的和的最大 ...
分类:
编程语言 时间:
2018-05-20 13:03:11
阅读次数:
155
一、分治法 将数组分为左右两部分,那么最大子数组存在三种可能。 位于左边的子数组 位于右边的子数组 为左子数组的最大后缀与右子数组的最大前缀之和 二、动态规划 如果当前最大数组和为负数,那么加上下一个数的和必然小于下一个的本身。所以当最大数组和为负数时,直接舍弃。 其状态转移方程为sum[i] = ...
分类:
编程语言 时间:
2018-05-11 12:52:59
阅读次数:
215