Lintcode 41 最大子陣列

2021-08-28 05:47:30 字數 877 閱讀 4384

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

個人思路:通過觀察可以知道,要想和最大,那麼這個子陣列的開頭元素和結尾元素必須是個非負數,因此採取的貪心策略是,先索引到陣列的第乙個非負數,然後開始累加,當累加的索引指向另外乙個非負數時,就比較之前的和加上該數大,還是該數本來就大,然後再對前一步的結果和之前記錄的最大兩者取最大

(ps:請忽視我混亂的**)

public int maxsubarray(int nums) 

if (start == nums.length)

return sum2;

int maxsum = nums[start];

int sum = maxsum;

for (int i = start+1; i < nums.length; i++) else

}return sum;

}

dalao思路:採取的貪心策略是不管怎樣,先把遍歷到的數加起來,如果目前的結果和為負,那前面累加的數就沒有意義,將變數置為0,重新開始累加。即貪心策略為不符合的,直接丟掉

// write your code here

int i;

int elemsum = 0; //陣列元素逐個求和

int maxsum = nums[0]; //記錄連續求和最大值(初始值)

for (i = 0; i < nums.length; i++)

//和為零時,從下乙個元素重新累加

if (elemsum < 0)

}return maxsum;

summary:與assigncookie1230 不同,那題求的是個數最多,這題求的是累積和最多

LintCode 41 最大子陣列

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

LintCode 41 最大子陣列

題目 給定乙個整數陣列,找到乙個具有最大和的子陣列,返回其最大和。注意事項 子陣列最少包含乙個數 樣例給出陣列 2,2,3,4,1,2,1,5,3 符合要求的子陣列為 4,1,2,1 其最大和為6 挑戰 要求時間複雜度為o n 思路動態規劃解決 可以把時間複雜度降低為o n 假設當前陣列為a n 假...

41 最大子陣列

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