LeetCode-Easy部分中标签为 Dynamic Programming(DP) 53. Maximum Subarray
2017-04-09 22:03
621 查看
原题
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4], the contiguous subarray [4,-1,2,1] has the largest sum = 6.
题目分析
这个题表面上看能分解为类似MaxSubArray(int[] nums, int i, int j)
即求nums[i:j]子数组的最大值。再仔细分析后发现,找不到与原问题的契合点。
不妨换思路,
maxSubArray(int[] nums, int i)
dyna[i] = nums[i] + (dyna[i-1]>0 ? dyna[i-1]:0)
max = Max(max, dyna[i])
代码实现
public int MaxSubArray(int[] nums) { int n = nums.Length; int[] dyna = new int ; dyna[0] = nums[0]; int max = dyna[0]; for (int i = 1; i < n; i++) { dyna[i] = nums[i] + (dyna[i - 1] > 0 ? dyna[i - 1] : 0); max = Math.Max(dyna[i], max); } return max; }
此题更精简的做法:
http://blog.csdn.net/daigualu/article/details/70980526
相关文章推荐
- LeetCode-Easy部分中标签为 Dynamic Programming(DP) 169. Majority Element
- LeetCode53. Maximum Subarray-python(easy) DP思想
- LeetCode-Easy部分中标签为Array#119 : Pascal’s Triangle II
- LeetCode-Easy部分标签为HashTable 447. Number of Boomerangs
- LeetCode-Easy部分中标签为Two Pointers 125. Valid Palindrome
- LeetCode-Easy部分中标签为String 58. Length of Last Word
- LeetCode-Easy部分中标签为LinkedList 203 Remove Linked List Elements
- LeetCode-Easy部分中标签为Array#414 : Third Maximum Number
- LeetCode-Easy部分中标签为Math 231. Power of Two
- LeetCode-Easy部分中标签为Two Pointers 88. Merge Sorted Array
- LeetCode-Easy部分中标签为Math 507. Perfect Number
- LeetCode-Easy部分中标签为String的所有题目
- LeetCode-Easy部分标签为HashTable 409. Longest Palindrome
- LeetCode-Easy部分标签为LinkedList 206. Reverse Linked List
- LeetCode-Easy部分中标签为Array#35: Search Insert Position
- LeetCode-Easy部分标签为HashTable 1. Two Sum(一种战胜95%的提交版本的算法)
- LeetCode-Easy部分标签为LinkedList 237. Delete Node in a Linked List
- LeetCode-Easy部分中标签为LinkedList的所有题目
- LeetCode-Easy部分中标签为LinkedList 160. Intersection of Two Linked Lists
- LeetCode-Easy部分标签为LinkedList 234. Palindrome Linked List