题目:和为零的最大连续子数组思路:我首先想到的是前缀数组和,遍历一遍数组,计算出sum[i](表示从0-i的子数组之和)。有了前缀数组和,只要sum[i]=sum[j](i#include#includeusing namespace std;// O(n^2)int longestSubArray...
分类:
编程语言 时间:
2015-09-26 11:47:09
阅读次数:
151
#include<map>
#include<iostream>
#include<vector>
#include<set>
using?namespace?std;
void?get(vector<int>?a)
{
vector<int>?num;
int?i?=?0;
map<int,?int>?ma;
num.push_back(0);
num.pus...
分类:
编程语言 时间:
2015-09-25 23:10:37
阅读次数:
327
经典的排序问题问题描述
一个数组中包含两个已经排好序的子数组,设计一个in-place(原位操作)算法来对这个数组排序。测试数据为 a[] = 1 4 5 7 8 9 2 3 6 10 11 。...
分类:
其他好文 时间:
2015-09-24 11:03:57
阅读次数:
174
1. 归并排序的原理:原理,把原始数组分成若干子数组,对每一个子数组进行排序,继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组举例:无序数组[6 2 4 1 5 9] 先看一下每个步骤下的状态,完了再看合并细节第一步: [6 2 4 1 5 9]原始状态第二步: [2 6] ...
分类:
编程语言 时间:
2015-09-24 10:51:08
阅读次数:
164
一步一步理解线段树目录一、概述二、从一个例子理解线段树 创建线段树 线段树区间查询 单节点更新 区间更新三、线段树实战--------------------------一 概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动...
分类:
其他好文 时间:
2015-09-22 13:02:50
阅读次数:
206
题目出自算法导论第三版,4.1-5.该题中提出“在已知A[1...j]中最大子数组的情况下,可以在线性时间内找出形如A[i...j+1](1<=i<=j+1)的最大子数组”,这一点让我大惑不解。如果这样是线性的话,那遍历数组,总的解法不又是O(N²)了么?又何谈O(N)?必然得在常量时间内找出A[i...
分类:
编程语言 时间:
2015-09-21 19:11:51
阅读次数:
199
问题描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?算法分析有一个te...
分类:
编程语言 时间:
2015-09-21 01:38:25
阅读次数:
173
题目:1、给定一数组,求该数组的最大子数组和;2、给定一矩阵,求该矩阵的最大子矩阵和;思路:1、求数组的最大子数组和很简单,可以通过动态规划来实现,假设数组为arr:假设dp[i]表示从0到i的数组的最大子数组和,那么递推关系式表示为:dp[0]=arr[0];dp[i]=dp[i-1]>0?dp[...
分类:
编程语言 时间:
2015-09-17 23:18:29
阅读次数:
260
【题目描述】输入一个整型数组,数组里有正数,也有负数。数组中一个或连续的多个整数组成的一个子数组,求所有子数组的最大值。要求时间复杂度为O(n)。【解决方案】解法一:举例分析数组的规律我的代码实现,仅供参考: 1 public static int FindGreatestSumOf...
分类:
编程语言 时间:
2015-09-16 17:25:46
阅读次数:
139
在上一篇中,通过一个求连续子数组的最大和的例子讲解,想必我们已经大概了然了分治策略和递归式的含义,可能会比较模糊,知道但不能用语言清晰地描述出来。但没关系,我相信通过这篇博文,我们会比较清楚且容易地用自己的话来描述。 通过前面两章的学习,我们已经接触了两个例子:归并排序和子数组最大和。这两个例...
分类:
编程语言 时间:
2015-09-15 21:38:12
阅读次数:
192