O(n)时间算法最大子序列和

来源:互联网 发布:linux xargs命令 编辑:程序博客网 时间:2024/05/02 00:33
import java.util.Arrays;public class 最大子序列和{    public static void main(String[] args)    {        int[] arr={1,-2,3,4,5,-2,-9,12,-9,6,-5,-4,7};        System.out.println(Arrays.toString(arr));        System.out.println(getMaxSubSequence(arr));        return;    }    public static String getMaxSubSequence(int[] arr)    {            int max=0;            int thisSeq=0;            int Seqi=0,Seqj=0;        for(int i=0,j=i;j<arr.length;j++)        {            thisSeq+=arr[j];            if(thisSeq>max)            {                max=thisSeq;                Seqi=i;                Seqj=j;            }            if(thisSeq<0)            {                i=j+1;                thisSeq=0;            }        }        return new String("从 "+Seqi+" 到 "+Seqj+" 存在最大子序列和为 "+max);    }}


0 0