Adobe Interview Question
Software Engineer / Developersint maxSubArraySum(int a[], int size)
{
int max_so_far = a[0], max_ending_here = 0;
int i;
for(i = 0; i < size; i++)
{
max_ending_here = max_ending_here + a[i];
if (max_so_far < max_ending_here)
max_so_far = max_ending_here;
if(max_ending_here < 0)
max_ending_here = 0;
}
return max_so_far;
}
this will work for all the cases.
u can juss put one check that arraysize>=1 where it can fail.
int _tmain(int argc, _TCHAR* argv[])
{
int array[] = {80,18,-56453,53,14,90,80,-70,100,105};
int n = sizeof(array)/sizeof(int);
int max_sum=0;
int sum=0;
for(int i = 0; i < n; i++)
{
//if (sum+array[i]>=max_sum) {sum=sum+array[i]; max_sum=sum;}
if (array[i]+array[i+1]>=max_sum) {sum=array[i]+array[i+1]; max_sum=sum;}
else sum=0;
}
std::cout<< max_sum;
getchar();
return 0;
}
what are you, nuts? you yourself posted the solution then what are you asking?
- Mr.4342 July 10, 2011