Can I get feedback on below code? Problem statement is Maximum difference between two elements such that larger element appears after the smaller number
Would this solution be still considered O(n) for time complexity? I know I do one additional pass but I found this way to be more intuitive
Is error handling done properly? Other ways to improve it?
int maxDiff(int *arr, int len);
int main(void)
{
int arr[] = {80, 2, 6, 3, 100};
int len = sizeof(arr)/sizeof(int);
int max_diff = maxDiff(arr, len);
printf(" max diff is %d \n ", max_diff);
return 0;
}
int maxDiff(int *arr, int len)
{
int min = INT_MAX;
int max = INT_MIN;
int max_index;
if (len < 1 || arr == NULL)
{
printf(" No element present \n ");
return INT_MIN;
}
for (int i = 0; i < len; i++)
{
if (arr[i] > max)
{
max = arr[i];
max_index = i;
}
}
for(int i = 0; i < max_index; i++)
{
if (arr[i] < min)
{
min = arr[i];
}
}
return max - min;
}