LintCode 41 最大子陣列

2022-09-01 01:45:10 字數 676 閱讀 6947

題目

給定乙個整數陣列,找到乙個具有最大和的子陣列,返回其最大和。

注意事項

子陣列最少包含乙個數

樣例給出陣列[−2,2,−3,4,−1,2,1,−5,3],符合要求的子陣列為[4,−1,2,1],其最大和為6

挑戰

要求時間複雜度為o(n)

思路動態規劃解決 可以把時間複雜度降低為o(n)

假設當前陣列為a[n];

假設已經求出了第i項的最大子陣列和max和包括第i項的最大子陣列和s(i);

求第i+1項的最大子陣列

if(s(i) >= 0) s(i + 1) = s(i) + a[i + 1];

else s(i + 1) = a[i + 1];

if(max 如果i = 0; s(0) = a[0]; max = a[0];

c++**

1

int maxsubarray(vectornums)

11else

1215

if(max < s) max =s;16}

17return

max;

1819 }

view code

LintCode 41 最大子陣列

給定乙個整數陣列,找到乙個具有最大和的子陣列,返回其最大和。注意事項 子陣列最少包含乙個數 樣例 給出陣列 2,2,3,4,1,2,1,5,3 符合要求的子陣列為 4,1,2,1 其最大和為6 挑戰 要求時間複雜度為o n 不考慮挑戰的要求的話,需要兩層迴圈,外層迴圈從開始遍歷到結束,內層迴圈用來尋...

Lintcode 41 最大子陣列

描述 給定乙個整數陣列,找到乙個具有最大和的子陣列,返回其最大和。個人思路 通過觀察可以知道,要想和最大,那麼這個子陣列的開頭元素和結尾元素必須是個非負數,因此採取的貪心策略是,先索引到陣列的第乙個非負數,然後開始累加,當累加的索引指向另外乙個非負數時,就比較之前的和加上該數大,還是該數本來就大,然...

41 最大子陣列

4.19 1 最開始想到的就是用很暴力的演算法,從第乙個數開始算。一直到最後乙個,毫無疑問時間複雜度的是n 2。但是沒想到居然過了耶。public class solution if nums.length 1 int length nums.length int max nums 0 for in...