计算最大子序列
2016-05-11 22:03
148 查看
给定整数序列,包括帧数和负数; 序列中连续的一个或多个整数组成一个序列,每个子序列求和。求和最大的子序列。
import java.util.ArrayList;
import java.util.Arrays;
public class MaxSequence
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
int[] array =
{ -1, 5, -2, -1, 4 };
System.out.println("sequence:" + Arrays.toString(array));
System.out.println("childSequence:" + max(array));
int[] array1 =
{ -1, 2, -2, -1, 4, 21, -2 };
System.out.println("sequence:" + Arrays.toString(array1));
System.out.println("childSequence:" + max(array1));
}
public static ArrayList<Integer> max(int[] array)
{
int maxSum = 0;
int currentSum = 0;
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < array.length; i++)
{
currentSum = currentSum + array[i];
list.add(array[i]);
if (currentSum > maxSum) // current sum
{
maxSum = currentSum;
} else if (currentSum <= 0)
{
list.clear();
currentSum = 0;
}
}
for (int i = list.size() - 1; i >= 0; i--)
{
if (list.get(i) <= 0)
{
list.remove(i);
} else
break;
}
return list;
}
}
import java.util.ArrayList;
import java.util.Arrays;
public class MaxSequence
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
int[] array =
{ -1, 5, -2, -1, 4 };
System.out.println("sequence:" + Arrays.toString(array));
System.out.println("childSequence:" + max(array));
int[] array1 =
{ -1, 2, -2, -1, 4, 21, -2 };
System.out.println("sequence:" + Arrays.toString(array1));
System.out.println("childSequence:" + max(array1));
}
public static ArrayList<Integer> max(int[] array)
{
int maxSum = 0;
int currentSum = 0;
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < array.length; i++)
{
currentSum = currentSum + array[i];
list.add(array[i]);
if (currentSum > maxSum) // current sum
{
maxSum = currentSum;
} else if (currentSum <= 0)
{
list.clear();
currentSum = 0;
}
}
for (int i = list.size() - 1; i >= 0; i--)
{
if (list.get(i) <= 0)
{
list.remove(i);
} else
break;
}
return list;
}
}
相关文章推荐
- 国际化资源文件是如何加载的?
- C++-作业五
- windows注册表学习笔记
- 1002. 写出这个数
- spring MVC工作原理
- WEKA,一个开源java的数据挖掘工具
- HTML
- C++指针详解
- 放盘子
- UICollectionView入门级使用 O(∩_∩)O哈哈哈~
- Java观察者模式编程
- 冒泡排序
- WEKA,一个开源java的数据挖掘工具
- python的requests初步使用
- 【bzoj3569】DZY Loves Chinese II 线性基+树上小技巧
- Oracle dblink详解
- Jquery实现初级特效导航
- nginx和tomcat服务器优化
- RTMP直播应用与延时分析
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法