class Solution {
public:
vector<int> sortedSquares(vector<int>& A) {
if (A.size() <= 0)
return A;
if (((*A.begin()) * (*(A.end()-1)) ) <= 0)
{
int pos = 0, pos1;
//find first
for (auto it : A)
{
if (it >= 0)
break;
pos++;
}
pos1 = pos-1;
vector<int> B;
do
{
if (pos1 >= 0 && pos <= A.size() - 1)
{
if ((A[pos1] + A[pos]) < 0)
{
B.push_back(A[pos] * A[pos]);
pos++;
}
else
{
B.push_back(A[pos1] * A[pos1]);
pos1--;
}
}
else
{
if (pos1 < 0)
{
B.push_back(A[pos] * A[pos]);
pos++;
}
else
{
B.push_back(A[pos1] * A[pos1]);
pos1--;
}
}
} while (pos1 >= 0 || pos <= A.size() - 1);
return B;
}
else
{
for (auto it = A.begin(); it != A.end(); it++)
{
*it = (*it) * (*it);
}
return A;
}
}
};
有序数组的平方
最新推荐文章于 2021-07-27 10:13:24 发布