这是一道考的烂的不能再烂的题目,但是依然有很多公司乐于将这样的题目作为笔试或面试题,足见其经典。问题是这样的:一个整数数组中的元素有正有负,在该数组中找出一个连续子数组,要求该子数组中各元素的和最大,这个子数组便被称作最大子数组。比如数组{2,4,-7,5,2,-1,2,-4,3}的最大子数组为{5...
分类:
编程语言 时间:
2015-12-08 20:17:59
阅读次数:
221
v题目:连续子数组求和 II给定一个整数循环数组(头尾相接),请找出一个连续的子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的值。如果多个答案,请返回其中任意一个。v 样例给定[3, 1, -100, -3, 4], 返回[4,0].v 思路1.如果不是循环数组,求解连...
分类:
编程语言 时间:
2015-12-07 22:33:52
阅读次数:
218
快速排序在实际应用中会面对大量具有重复元素的数组。例如加入一个子数组全部为重复元素,则对于此数组排序就可以停止,但快排算法依然将其切分为更小的数组。这种情况下快排的性能尚可,但存在着巨大的改进潜力。(从O(nlgn)提升到O(n)) 一个简单的想法就是将数组分为三部分:小于当前切分元素的部分,等于....
分类:
编程语言 时间:
2015-12-07 18:15:35
阅读次数:
191
最大子数组给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例给出数组[?2,2,?3,4,?1,2,1,?5,3],符合要求的子数组为[4,?1,2,1],其最大和为6注意子数组最少包含一个数挑战要求时间复杂度为O(n)若当前和小于0,那么加到下一个数上必然会使和减小,此时抛弃这个和重...
分类:
编程语言 时间:
2015-12-06 15:52:19
阅读次数:
152
一:线段树的基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,基本能保持每个操作的复杂度为O(log n)性质:假设某节点对应的区间是[a,b],设c=(a+b)/2,则左子树对应的区间是...
分类:
其他好文 时间:
2015-12-01 18:10:33
阅读次数:
153
线段树转载请注明出处,谢谢!http://blog.csdn.net/metalseed/article/details/8039326持续更新中···一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问...
分类:
其他好文 时间:
2015-12-01 16:27:13
阅读次数:
274
给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置样例给出[-3, 1, 2, -3, 4],返回[0, 2]或者[1, 3].思路:这道题最开始我的想法是用两重宣传去查找第一组连续数字和为0的两端,会发现这种情况算法的复杂度是O(n*n);应该是挺复杂的方法...
分类:
编程语言 时间:
2015-11-30 23:58:36
阅读次数:
324
1. 问题描述 对于数组(如下),求解其最大子数组. 结果为: 2. 算法设计 采用递归的方法求解 A. 求解数组左半部分的最大子数组 B. 求解数组右半部分的最大子数组 C. 求解整个数组的最大子数组 D. 比较A,B,C求出的结果,选出一个最大值,即为最终结果. 3. 数据结构设计 A. 中间结...
分类:
编程语言 时间:
2015-11-26 23:20:57
阅读次数:
144
1.对小规模子数组使用插入排序用不同的方法处理小规模问题能改进大多数递归算法的性能,因为递归会使小规模问题中方法的调用过于频繁,所以改进对它们的处理方法就能改进整个算法。对排序来说,我们已经知道插入排序(或者选择排序)非常简单,因此很可能在小数组上比归并排序更快。和之前一样,一幅可视轨迹图能够很好地...
分类:
编程语言 时间:
2015-11-21 01:52:12
阅读次数:
270