求解陣列中連續一段子陣列和的最大值。例如:,最大值為59+26-53+58+97=187
思路:計算出任意i到j之間連續子陣列的和再比較必然能得到最大值,但時間複雜度為o(n^2),我們希望能找出線性時間的演算法。
我們注意到,假如陣列中全為正數,那麼最大和必然為全部數相加;如果陣列中有負數,並且如果加上某個負數,子陣列的和小於0,則最大和子陣列必然不包含這個負數。基於此,給出以下**:
//時間複雜度為o(n)計算陣列中任何連續子陣列的最大和
#include int getmaxvalue(int data,int
length)
}return
max;
}int
main()
;
int length = sizeof(data) / sizeof(int
);
int max =getmaxvalue(data,length);
printf("%d
",max);
}
求陣列的子陣列之和最大值
題目 乙個有n個整數元素的一維陣列a 0.n 1 這個陣列當然有很多子陣列,那麼子陣列之和最大值是多少?解答 求子陣列之和最大,這裡是連續的子陣列,如果乙個數為負數,陣列之和會減少,記住最大值,只要陣列之和沒有小於0就可以繼續累加,比如,3到 1子陣列之和減小了,但是沒有小於0,可以繼續累加下乙個數...
求陣列中連續k個數最大值
變式題求數列中第k大的數 前k大問題 給定乙個長度為n陣列,求每個連續k個數的最大值,複雜度要求o n log k 解釋 例如陣列為 1,3,2,4,5 k 2,則連續k個數的區間有 1,3 3,2 2,4 4,5 每個區間的最大值分別為3,3,4,5,所以輸出3,3,4,5 include usi...
求陣列的子陣列之和的最大值
本題的要求顯然是o n 級的複雜度咯 結合書上的分析,可以發現如下條件 從陣列右邊像左遍歷,當前下標為i,那麼最大值有3中情形 1.最大值為array i 2.最大值為array i maxsuminclude 3.最大值為不包括array i 的maxsumexclude 最後返回最大值 max ...