在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。
求解
程序代码:int find(int a[], int len)
{
int *left, *right, i, max, min;
left = (int *)malloc(len * sizeof(int) * 2);
right = left + len;
for(max = a[0], i = 0; i < len; i++)
{
if(max < a[i]) max = a[i];
left[i] = max;
}
for(min = a[len - 1], i = len - 1; i >= 0; i--)
{
if(min > a[i]) min = a[i];
right[i] = min;
}
for(i = 0; i < len && left[i] > right[i]; i++);
free(left);
return (i < len) ? i : -1;
}我很想知道楼上如何用分治法解这个问题。期待中...
