在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。
求解
先用strlen 统计数组个数 当满足大于等于左侧所有数,小于等于右侧所有数,的元素就输出
你应该懂的把
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; }我很想知道楼上如何用分治法解这个问题。期待中...