标签:else 个数 bubuko 简单 分享图片 info div src col
题目从这儿看到的 : https://mp.weixin.qq.com/s/2OXg67MfBuQjDPAJxxD8rQ,但是公众号上有一点讲错了,问题还挺严重的。
题目:有一个无序数组2,3,1,4,6,排序后是1,2,3,4,6,最大差值是 6 - 4 = 2。
原公众号文章就是第四步错了:
举个简单的例子就知道是不对的了,最大值并不出现 在空桶的两侧。
代码实现:
int find_Max_Offset(int *a,int length) { int min = getMin(a, length), max = getMax(a, length); if (max == min) return 0; int **bucket = new int*[length + 1]; for (int i = 0; i < length + 1; i++) { bucket[i] = new int[3]; bucket[i][0] = 0; } bucket[0][0] = 1; bucket[0][1] = bucket[0][2] = min; bucket[length][0] = 1; bucket[length][1] = bucket[length][2] = max; for (int i = 1; i < length; i++) { int index = ( a[i] - min) * length / (max - min); if (!bucket[index][0]) { bucket[index][0] = 1; bucket[index][1] = a[i]; bucket[index][2] = a[i]; } else { bucket[index][1] = a[i] > bucket[index][1] ? a[i] : bucket[index][1]; bucket[index][2] = a[i] < bucket[index][2] ? a[i] : bucket[index][2]; } } int offset = 0; for (int i = 0; i < length; i++) { int max = bucket[i++][1]; while (bucket[i][0] == 0) i++; int min = bucket[i][2]; offset = (min - max) > offset ? (min - max) : offset; } return offset; }
标签:else 个数 bubuko 简单 分享图片 info div src col
原文地址:https://www.cnblogs.com/czc1999/p/10344077.html