题目: 输入一个整型数组, 数组里有正数也有负数. 数组中的一个或连续的多个整数组成一个子数组. 求所有子数组的和的最大值. 要求时间复杂度为O(n)#include int maxsum_subarray(int a[], int n){ if( a==NULL || n curmax ) ...
分类:
其他好文 时间:
2014-07-28 15:27:13
阅读次数:
203
/*** String 构造方法学习* String(byte[ ] bytes):通过byte数组构造字符串对象。* String(byte[] bytes, int offset, int length) 通过byte数组构造字符串子数组对象* * String(char[ ] value):通...
分类:
编程语言 时间:
2014-07-27 10:10:32
阅读次数:
224
题意如下:
dota里面有一个hero名为Pudge,他有一个用链子连着的铁钩,一开始他的链子全是一块一块的铜块(价值为1)连接而制的,现在他可以选择任意长度(从i到j)然后对其进行改造,可以改成银块(价值为2),也可以改成金块(价值为3),然后在Q次改造后,要求你求出现在他的链子的总价值是多少!!!
这个题简化的话--->就是给出一个长度为n的数组,初始值全为1,然后在Q次改变指定长度的子数组的值后,再求出这个长度为n的数组的总值大小!
思路:使用线段树来做!百度线段树的地址:--->>>线段树
(说起来...
分类:
其他好文 时间:
2014-07-26 15:23:03
阅读次数:
277
情形一:不允许首尾相连
此情况很常见,方法是动态规划,编程之美的方法三给出了解法,这里就直接给出代码了
int maxSubSum(vector& data)
{
int length = data.size();
assert(length >= 0);
int maxSum = data[length-1],startSum = data[length-1],begin = leng...
分类:
其他好文 时间:
2014-07-23 13:28:36
阅读次数:
197
4、归并排序
4.1算法思想——
将数组分为两半,对每部分递归地应用归并排序,直到最后的子数组只包含一个元素。在每部分都排好序后,对它们进行合并。
4.2
时间复杂度——
假如用T(n)表示使用归并排序对n个元素构成的数组进行排序而使用的时间,用mergeTime来表示将两个子分组合并起来而花费的时间。那么
T(n)
= T(n/2)+T(n/2) + mergetime
而me...
分类:
其他好文 时间:
2014-07-22 22:38:33
阅读次数:
189
情形一:不允许首尾相连
此情况很常见,方法是动态规划,编程之美的方法三给出了解法,这里就直接给出代码了
int maxSubSum(vector& data)
{
int length = data.size();
assert(length >= 0);
int maxSum = data[length-1],startSum = data[length-1],begin = leng...
分类:
其他好文 时间:
2014-07-22 17:54:40
阅读次数:
197
首尾相连数组的最大子数组和时间限制:1000ms | 内存限制:65535KB难度:4描述给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是相连的。数组中一个或多个连续元素可以组成一个子数组,其中存在这样的子数组arr[i],…arr[n-1],arr[0...
分类:
其他好文 时间:
2014-07-19 19:36:56
阅读次数:
176
一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(lgN)!性质:父亲的区间是[a,b],(c=(a+b)/2)左儿子的区间是[a,c],右儿子...
分类:
其他好文 时间:
2014-07-19 13:26:16
阅读次数:
256
问题描述题目来源:Topcoder SRM 627 Div2 BubbleSortWithReversals给定待排序数组A,在最多反转K个A的不相交子数组后,对A采用冒泡排序,问最小的swap次数是多少?冒泡排序的伪代码如下:BubbleSort(A): 循环len(A) - 1次: for i ...
分类:
其他好文 时间:
2014-07-14 22:32:28
阅读次数:
576
/*求子数组的最大和题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, ...
分类:
其他好文 时间:
2014-07-14 10:18:40
阅读次数:
187