个人代码
思路解写
- 作为动态规划入门的第一题,个人认为这个道题最本质要想明白两个东西:
-
- 动态规划每一步记住的信息是什么?
-
- 动态规划的转移方程是什么?
代码
第一个版本
int maxSubArray(int* nums, int numsSize){
int memory[numsSize];
int max;
for( int i = 0 ; i < numsSize; i++ ){
if( i == 0){
memory[i] = nums[i];
max = nums[i];
}
else{
memory[i] = ((memory[i-1]+nums[i]) >= nums[i])?(memory[i-1]+nums[i]):nums[i];
if(memory[i] >= max) max = memory[i];
}
}
return max;
}
改进版本
int maxSubArray(int* nums, int numsSize){
int memory;
int max;
for( int i = 0 ; i < numsSize; i++ ){
if( i == 0){
max = nums[i];
memory = nums[i];
}
else{
memory = (memory >= 0)?(memory+nums[i]):nums[i];
if(memory >= max) max = memory;
}
}
return max;
}
代码结果
第一个
第二个
这个内存占用还上上升了????