思路:含负数有序数组平方后最大的数只可能在数组的两边,所以设置双向指针left和right,一个新数组并用下标k记录最大的元素,再k-- 直到遍历完原数组;
简易代码:
int left=0;
int right=n-1;
int a[n];
if(a[i]*a[i]<a[j]*a[j])
a[k--]=a[j]*a[j];
j--;
else
a[k--]=a[i]*a[i];
i++;
思路:含负数有序数组平方后最大的数只可能在数组的两边,所以设置双向指针left和right,一个新数组并用下标k记录最大的元素,再k-- 直到遍历完原数组;
简易代码:
int left=0;
int right=n-1;
int a[n];
if(a[i]*a[i]<a[j]*a[j])
a[k--]=a[j]*a[j];
j--;
else
a[k--]=a[i]*a[i];
i++;