题目:最大子列和
问题描述:给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。
算法描述:采用分治法,将数组分成左右两部分,然后计算出左右两部分的最大数,最后在比较。
复杂度:
每次递归将问题分为两个子问题,每个子问题中又有时间复杂度为O(n)的操作;
则有T(n)=2T(n/2)+O(n);
得到时间复杂度为O(nlogn);
S(n)=0(n);
心得体会:没有考虑数组有多个0的情况,在编程的过程中,没有考虑边界条件导致出错