求最大子序列。。
var testArr = [-1,-3,4,5,20], temp = 0,i, j , k ,sum = 0; for(i=0; i<testArr.length; i++){ for(j=i;j<testArr.length;j++){ temp = 0; for(k=i;k<=j;k++){ temp += testArr[k]; } if(temp > sum){ sum = temp; } } } console.dir(sum); 29
(function(){ var testArr = [-1,-3,4,5,20], temp = 0,i, j , k ,sum=0; for(i=0; i<testArr.length; i++){ for(j=0;j<i;j++){ temp = 0; for(k=j;k<=i;k++){ temp += testArr[k]; if(temp > sum){ sum = temp; } } } } console.dir(sum); })()
var testArr = [-1,-3,4,5,20,-30], temp = 0,i, j , k ,sum=0; for(i=0; i<testArr.length; i++){ if(testArr[i] <0) continue; temp = 0; for(j=i;j<testArr.length;j++){ temp += testArr[j]; if(temp > sum){ sum = temp; }else if(temp <=0){ i = j; temp = 0; } } } console.dir(sum);
var Arr = [-3,2,4,10,-19], i , temp=0 ,sum = 0; for( i=0; i<Arr.length; i++ ) { temp += Arr[i]; if(temp>sum) { sum = temp; } else if( temp>0 ) { } else if( temp < 0 ) { temp = 0; } } console.dir(sum);
思想就是当几个数累加为0或为负数时 这几个数一定不是最大序列里的数。碰到后直接把中间变量赋为0
生命只有一次。