算法分析与设计丨第二周丨LeetCode(4)——Maximum Subarray(Easy)
2017-09-14 11:27
375 查看
动态规划&分治法
题目链接:点击打开链接
这道题目要求子数组的最大和,用动态规划的方法会优美许多,而分治法的暂时没时间写,下次再补上。
动态规划:
易想到递推公式:局部最大和:max(curSum+i,i),如果当前子数列之和比遍历到的元素要小,那就取元素为局部最大和
全局最大和:max(maxSum,curSum),将当前全局最大和与局部最大和进行比较
代码也可得出
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int curSum = 0,maxSum = INT_MIN;
for(int i : nums)
{
curSum = max(curSum + i , i);
maxSum = max(maxSum , curSum);
}
return maxSum;
}
};
题目链接:点击打开链接
这道题目要求子数组的最大和,用动态规划的方法会优美许多,而分治法的暂时没时间写,下次再补上。
动态规划:
易想到递推公式:局部最大和:max(curSum+i,i),如果当前子数列之和比遍历到的元素要小,那就取元素为局部最大和
全局最大和:max(maxSum,curSum),将当前全局最大和与局部最大和进行比较
代码也可得出
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int curSum = 0,maxSum = INT_MIN;
for(int i : nums)
{
curSum = max(curSum + i , i);
maxSum = max(maxSum , curSum);
}
return maxSum;
}
};
相关文章推荐
- 算法分析与设计丨第六周丨LeetCode(10)——Best Time to Buy and Sell Stock(Easy)
- 算法分析与设计丨第三周丨LeetCode(5)——Median of Two Sorted Arrays(Hard)
- 算法分析与设计丨第六周丨LeetCode(9)——Course Schedule(Medium)
- 算法分析与设计丨第十三周丨LeetCode(17)——Coin Change(Medium)
- 算法分析与设计——LeetCode刷题之TwoSum(easy)
- 算法分析与设计丨第十周丨LeetCode(14)——Edit distance(Hard)
- 算法分析与设计丨第一周丨 LeetCode(1)——Two Sum
- 算法分析与设计丨第十八周丨LeetCode(21)——Binary Tree Maximum Path Sum(Hard)
- 算法分析与设计丨第三周丨LeetCode(6)——Find Largest Value in Each Tree Row(Medium)
- 算法分析与设计丨第一周丨LeetCode(2)——Different Ways to Add Parentheses(Medium)
- 算法分析与设计丨第十四周丨LeetCode(18)——Maximum Subarray(Medium)
- 算法分析与设计——LeetCode Problem.538 Convert BST to Greater Tree
- [算法分析与设计] leetcode 每周一题: 215. Kth Largest Element in an Array
- 算法分析与设计——LeetCode Problem.16 3Sum Closest
- 算法分析与设计课程(18):【leetcode】Clone Graph
- [算法分析与设计] leetcode 每周一题: 467. Unique Substrings in Wraparound String
- 算法分析与设计——LeetCode:46. Permutations
- 算法分析与设计课程(19):【leetcode】Ugly Number II
- 算法分析与设计——LeetCode Problem.18 4Sum
- 算法分析与设计课程(16):【leetcode】 Integer to Roman