LeetCode 53 最大子序和

2021-10-09 05:19:26 字數 1000 閱讀 4796

題目描述:

給定乙個整數陣列 nums ,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。

示例:輸入: [-2,1,-3,4,-1,2,1,-5,4]

輸出: 6

解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。

思路:

1.將陣列長度為0和為1的陣列分別摘出,先解決這兩種特殊情況。

2.設定遍歷陣列需要的下標元素i

設定sum變數儲存每次加法得出的和

設定temp變數儲存最大和

3.遍歷陣列元素

比較當前的sum值是否大於0,若大於即可與當前走到的下標所指元素相加,不大於則sum的值就為當前下標所指元素的值。

再比較此時的sum值是否比temp值(即當前儲存的最大和值)大,若大就更換temp值

4.返回temp值為陣列中的最大子序和

**:

int

maxsubarray

(int

* nums,

int numssize)if(

1==numssize)

int i=0;

//陣列下標

int sum=nums[0]

;//初始化最大和為陣列中第乙個元素的值

int temp=nums[0]

;//初始化臨時變數,該臨時變數儲存的值為當前的最大和

for(i=

1;i)//因為已經將陣列中第乙個元素賦給sum,所以從第二個元素開始遍歷陣列

else

if(sum>temp)

//如果此時的sum比當前的臨時變數中的最大和還大

}return temp;

//返回temp

}

知識補充:

1.注重體會temp值的更換

2.==雙等號用來比較

LeetCode53最大子序和

給定乙個序列 至少含有 1 個數 從該序列中尋找乙個連續的子串行,使得子串行的和最大。例如,給定序列 2,1,3,4,1,2,1,5,4 連續子串行 4,1,2,1 的和最大,為6。擴充套件練習 若你已實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解。一開始用的最簡單最直接的方法,挨個的把...

LeetCode 53 最大子序和

給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解。這道題本來是能做出...

LeetCode 53 最大子序和

題目鏈結 題目描述 給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。解決方法 解題思路 動態規劃,複雜度為 o n 令dp i 表示最後一項為...