由买买提看人间百态

topics

全部话题 - 话题: minelem
(共0页)
b******7
发帖数: 92
1
来自主题: JobHunting版 - 网上看到一道题 求O(n)的解法
算法思想:可以使用|L|大小的最小堆,同时维护堆的最大值,则range为(heap.top(),
max{heap}),最多迭代n-|L|次,得出最优range。
时间复杂度O(|L|) + O(n*log|L|) 由于|L|最多为128,故为O(n)
此算法前提为:D(c)从小到大排序
code:
typedef pair::iterator,vector::iterator> Itemtype;
struct ItemCompare{
bool operator()(const Itemtype & left, const Itemtype & right)
{
return *(left.first) > * (right.first);
}
};
pair minrange(unordered_map > & D, vector &
L)
{
pair result = make_pair(-1,-1);
v... 阅读全帖
c*******r
发帖数: 610
2
来自主题: JobHunting版 - 再问一道数组题
贴一个,大家看看对不对:
//do not deal with array with size less than 2
int findMinDiff(int A[], int n)
{
if (n <2)
{
return -1;
}
int minElem = A[0];
int minDiff = abs(A[1] -A[0]);
for (int i = 1; i < n; ++i)
{
if (abs(A[i] - minElem) < minDiff)
{
minDiff = abs(A[i] - minElem);
}
if (A[i] < minElem)
{
minElem = A[i];
}
}
return minDiff;
}
(共0页)