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. –