原文链接:线段树(Segment Tree)1、概述线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,基本能保证每个操作的复杂度为O(lgN)。线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一...
分类:
其他好文 时间:
2015-11-19 18:17:29
阅读次数:
174
最大和子数组问题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 13 -3 -25 20 -3 -16 -23 18 20 -7 12 -5 -22 15 -4 7 求这个数组中子数组的最大和。 分治法的思想: 我们来思考如何用分治法来求解最大子数组问题。假定我们要寻...
分类:
编程语言 时间:
2015-11-18 19:28:05
阅读次数:
578
《编程之美》183页,问题2.14——求子数组的字数组之和的最大值。(整数数组)我开始以为可以从数组中随意抽调元素组成子数组,于是就有了一种想法,把最大的元素抽出来,判断是大于0还是小于等于0,如果大于0就对除了这个最大值外剩下的数组部分进行递归:using System;using System....
分类:
编程语言 时间:
2015-11-18 18:01:56
阅读次数:
268
快速排序的基本思想为分治法。通过不断的划分,以及对子数组的排序,来实现对整个数组的排序。归并排序也是分治法的思想,相反的,归并是将小的数组不断的合并来实现排序。 void quicksort(int data[], int left, int right){ if(left >= right)...
分类:
编程语言 时间:
2015-11-17 12:37:21
阅读次数:
128
一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。依照这种方式,我们可以创建二维或者三维数组:实例PHP - 多维数组多维数组是包含一个或多个数组的数组。在多维数组中,主数组中的每一个元素也可以是一个数组,子数组中的每一个元素也可以是一个数组。实例在这个实例中,我们创建了一个自动分配 ...
分类:
编程语言 时间:
2015-11-12 21:56:50
阅读次数:
246
题目和大于S的最小子数组给定一个由 n 个整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。样例给定数组[2,3,1,2,4,3]和 s =7, 子数组[4,3]是该条件下的最小长度子数组。挑战如果你已经完成了O(n)时间复杂度的编程,请再试...
分类:
编程语言 时间:
2015-11-11 23:49:45
阅读次数:
461
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,...
分类:
编程语言 时间:
2015-11-08 20:53:10
阅读次数:
217
快速排序是基于冒泡排序的算法改进,算法的基本思想是分治的思想.关于分治思想有空写.基本的排序原理: 每次排序只发生在指定的边界内.然后把指定边界内的数组看作一个完整的子数组,将字数组的首位元素作为比较的基准(标准的算法是随机选择,而且有选择的算法,有空写)进行一次排序,此次单一排序的目的是将字数组中...
分类:
编程语言 时间:
2015-11-07 17:38:43
阅读次数:
251
题目连续子数组求和给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的值。(如果两个相同的答案,请返回其中任意一个)样例给定[-3, 1, 3, -3, 4], 返回[1,4].解题法一:直接暴力,时间复杂度O(N2),时间超时public ...
分类:
编程语言 时间:
2015-10-30 21:46:10
阅读次数:
414
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array[?2,1,?3,4,?1,2,1,...
分类:
编程语言 时间:
2015-10-30 12:23:19
阅读次数:
165