代码如下:
class Solution {
public int[] sortedSquares(int[] A) {
int len=A.length;
if(len==0)
return null;
int[] square=new int[len];//len是长度 不是最大索引下标
int i=0,j=0,k=0;
while(A[j]>=0){
for(k=0;k<len;++k)
square[k]=A[k]*A[k];
return square;
}
while(j<len&&A[j]<0)
{
++j;
}
i=j-1;
while(i>=0&&j<len){
// square[k]=(A[i]>=A[j])?A[j]*A[j]:A[i]*A[i];
// --i;
// ++j;
// ++k;
if(A[i]*A[i]>=A[j]*A[j])
{
square[k]=A[j]*A[j];
++j;
++k;
}
else
{ square[k]=A[i]*A[i];
--i;
++k;
}
}
if(i<0){
while(j<len){
square[k]=A[j]*A[j];
++j;
++k;
}
}
if(j>=len)
{
while(i>=0){
square[k]=A[i]*A[i];
--i;
++k;
}
}
return square;
}
}
运行结果
代码还有许多可以改进的地方 以后慢慢修正