int Solution::solve(vector<int> &A)
{
sort(A.begin(), A.end());
map<int, int>ma;
int m;
for (int i = 0; i<A.size(); i++)
ma[A[i]] = 1;
for (int i = 0; i<A.size(); i++)
ma[A[i]]++;
if (A.size() == 1 && A[0] == 0)
return 1;
if (ma[A[0]] == (A.size() + 1))
return -1;
for (int i = 0; i<A.size(); i++)
{
if (ma[A[i]]>2 && ma[A[i]]>0)
{
m = A.size() - (i + 1) - (ma[A[i]] - 2);
ma[A[i]] = -1;
}
if (ma[A[i]] == 2)
m = A.size() - (i + 1);
if (m == A[i])
{
return 1;
}
}
return -1;
}
给定一个整数数组超过,发现如果一个整数p的阵列,使得所述阵列中大于p的整数的数目等于至p 如果这样的整数被发现返回1,否则在存在返回-1。 A是用户输入的矢量。存储器限制在C++
我在interviewBit.com 写这个程序是表示MEMORY上限超出如何优化这个代码,我已经采用阵列,矢量试过,unordered_map代替图则示出了分段故障
阵列可以有重复的元素以及负的整数ALSO 我已经使用地图跟踪每一个元素被重复了多少遍
检查关。如果您正在寻找反馈工作代码,考虑在HTTPS发布://codereview.stackexchange .com /代替。 –
你不应该在这里问这个问题! –
你为什么需要地图?从结束开始排序后。最后一个值没有比它更大的成员 - 所以它应该是0来匹配条件。下一个应该是1,接下来应该是2 ...直到找到匹配或富指数0. –