还有很多方法,以后回头刷的时候再试试其他的
Kadane算法:
https://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E5%88%97%E9%97%AE%E9%A2%98
题目分析:给一串数字,输出 最大子数列的和
C++:
int maxSubArray(vector<int>& nums) {
int cur_sum ,max_sum;
int len = nums.size();
cur_sum = max_sum = nums[0];
if (len == 0) return 0;
for (int i = 1 ; i < len ; i++){
cur_sum = max(nums[i] , cur_sum + nums[i]);
max_sum = max(cur_sum , max_sum);
}
return max_sum;
}
Python:
def maxSubArray(nums:list):
if len(nums) == 0:
return 0
cur_sum = max_sum = nums[0]
for x in range(1, len(nums)):
cur_sum = max(nums[x], cur_sum + nums[x])
max_sum = max(cur_sum, max_sum)
return max_sum