#### 977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
思路
数组可以看做是有序排列的,平方后负数可能会大于正数,但是在平方后最大的数肯定在数组的两边,因此可以采用双指针,分别指向数组头尾。
public:
vector<int> sortedSquares(vector<int>& nums) {
vector<int> result(nums.size(), 0);//定义一个同样长度的容器
int k = nums.size() - 1;//从新定义的容器最后开始填
for(int i=0, j=nums.size()-1; i<=j;)//i指向第一位元素,j指向最后一位元素,i>j的时候退出循环,
{
if(nums[i] * nums[i] > nums[j] * nums[j])//哪一位元素平方大,就将他存入新容器,从容器后面开始存
{
result[k--] = nums[i] * nums[i];
i++;//存储完毕后,该指针向后移位
}
else
{
result[k--] = nums[j] * nums[j];
j--;//存储完毕后,该指针向前移位
}
}
return result;
}
};