题目:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
public class FindMaxSubArr {
public int maxSum;
public int indexStart;
public int indexEnd;
/**
* 查找和值最大的子数组
*
* 如果满足要求则子数组必须满足
* 当子数组的长度大于1时,以子数组首个元素开始的,子数组的子数组,和值必须大于等于0
* 找出满足这个条件的子数组
* 并在其中找出和值最大的
*
*
* */
public void getMaxSubArr(int[] arr) {
if (arr != null && arr.length > 0) {
int start = 0;
int end = 0;
int sum = arr[0];
maxSum = sum;
indexStart = start;
indexEnd = end;
for (int i = 1; i < arr.length; i++) {
if (sum < 0) {//sum小于0表示该子数组不符合条件,重新查找下一个符合条件的子数组
sum = arr[i];
start = i;
} else {
sum += arr[i];//满足条件则继续累加
}
end = i;
if (sum >= maxSum) {//纪录当前和值最大的子数组
maxSum = sum;
indexStart = start;
indexEnd = end;
}
}
}
}
public static void main(String[] args) {
int[] arr={1, -2, 3, 10, -4, 7, 2, -5};
FindMaxSubArr test=new FindMaxSubArr();
test.getMaxSubArr(arr);
System.out.println("maxSum="+test.maxSum);
System.out.println("indexStart="+test.indexStart);
System.out.println("indexEnd="+test.indexEnd);
}
}
分享到:
相关推荐
在本文中,我们将设计一个算法来求图中一个源点到其他各顶点的最短路径。该算法使用邻接表表示图,并按照长度非递减次序打印输出最短路径的长度及相应路径。 知识点1:图论基本概念 在图论中,图是一种非线性数据...
设计一个算法采用顺序栈判断表达式中的括号是否正确配对。
试写一个算法,在以邻接矩阵方式储存的有向图G中求顶点i到顶点j的不含回路的长度为k的路径数
一个有关八皇后问题的一个算法,用c语言编写
[精]题目试写一个算法.doc
模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+...
整个过程,都是使用数组来实现每个算法,模拟队列,模拟堆栈的功能,实现每一个置换算法。 页面置换算法 最佳置换算法(OPT):选择永不使用或是在最长时间内不再被访问(即距现在最长时间才会被访问)的页面淘汰出...
Gray码是一个长度为2的N次幂的序列,序列中无相同元素,每个元素都是长度为N位的(0,1)串,相邻元素恰好只有一位不同,用分置策略设计一个算法对任意的N构造相应的Gray码。
- 最优性证明:证明一个算法是否能够找到最优解或者是在特定条件下达到最优。 - 案例分析:通过对具体例子的研究来验证算法的有效性和可行性。 3. **典型算法谜题实例**: - 排序谜题:例如快速排序中的最佳分割...
对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。本书专门讨论了线性规划,介绍了动态规划的两个...
算法(Algorithm)是指...如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法
2. 算法设计:其次,我们需要设计一个算法来解决这个问题。 3. 算法分析:然后,我们需要分析算法的时间和空间复杂度,以确定算法的效率。 4. 算法比较:最后,我们需要比较不同算法的优缺,选择最适合的问题解决...
其性质说明,如果两个函数f(n)和g(n)分别代表两个算法的时间复杂度,则这两个算法的时间复杂度之和的上界为O(max{f(n),g(n)})。 5. 素数判断算法的效率分析:习题中给出了两种判断一个大于2的正整数n是否为素数的...
一个算法练习CRACKME的分析 ·25.再来一个CRACKME的算法分析 ·26.再来一个CRACKME算法分析(适合新手) ·27.一个Delphi CRACKME的算法分析(适合新手) ·28.风飘雪大侠的一个VB的CRACKME算法分析 ·29.用MASM32 ...
一个算法可以用多种编程语言实现,并且同一个算法可以用不同的程序实现。 6. 算法的健壮性:一个健壮的算法应当能够处理非法输入数据的情况,避免出现错误。算法的健壮性是确保程序稳定运行的关键因素之一。 7. ...
其中测试平台还包括一个算法生成的类,可以方便测试数据的生成: SortHelper类中的方法generateRandomArray的参数分别为,(num,left,right),其中第一个参数参与算法生成的数量级,由用户自行输入,参与算法的...
最坏情况的时间复杂度提供了一个算法性能的上限,是最常被引用的指标。 ### 1.4.4 算法的存储空间需求 算法的存储空间需求是指算法执行过程中所需的最大存储空间。这包括算法本身的存储空间(如变量、数组等)以及...
双层规划模型的遗传算法求解的Matlab...这个Matlab源码提供了一个完整的双层规划模型的遗传算法求解的实现,可以作为解决双层规划问题的参考,同时也提供了一个算法仿真团队的链接,方便用户获取更多的算法仿真资源。