java之连续子数组的最大和
2015-07-26 21:25
453 查看
题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组,求所有子数组的和的最大值。要求时间复杂度为O(n).
这个解法可以用动态规划来解。
其代码为:
package LinkList;
public class FindMaxSumofSubArrayMain {
public static int maxSubSum(int[] a) {
int maxSum = 0, thisSum = 0;
if (a == null || a.length <= 0)
return 0;
for (int i = 0; i < a.length; i++) {
thisSum += a[i];
if (thisSum > maxSum)
maxSum = thisSum;
else if (thisSum < 0)
thisSum = 0;
}
return maxSum;
}
public static void main(String[] args) {
int a[] = { 1, -2, 3, 10, -4, 7, 2, -5 };
System.out.println(maxSubSum(a));
}
}
这个解法可以用动态规划来解。
其代码为:
package LinkList;
public class FindMaxSumofSubArrayMain {
public static int maxSubSum(int[] a) {
int maxSum = 0, thisSum = 0;
if (a == null || a.length <= 0)
return 0;
for (int i = 0; i < a.length; i++) {
thisSum += a[i];
if (thisSum > maxSum)
maxSum = thisSum;
else if (thisSum < 0)
thisSum = 0;
}
return maxSum;
}
public static void main(String[] args) {
int a[] = { 1, -2, 3, 10, -4, 7, 2, -5 };
System.out.println(maxSubSum(a));
}
}
相关文章推荐
- hihocoder 1154 Spring Outing
- 希尔排序与堆排序(Java版)
- 初学JavaWeb开发遇到的问题与解决
- Java IO(三) 之 FileInputStream
- java:带有图形化界面,可以发送和接收的聊天工具
- java实现冒泡排序
- MyEclipse快捷键大全
- java实现选择排序
- 栈和队列常见题型(java版)
- 文本文件BASE-64编码解码
- 深入理解java垃圾回收机制
- JavaEE总论
- 学习 java netty (一) -- java nio
- 冒泡,简单选择,直接插入排序(Java版)
- java 获取局域网中的所有主机名和IP地址
- JDK 8 中Interface新增的default方法和static方法的区别和使用
- Java读写文件中文乱码问题折腾一个周末重要解决
- Java小日历
- Spring @Transactional ——事务回滚
- Java 设计模式—装饰者模式