持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
#1题目
#2解析
这里我们的处理方式是使用双指针来进行解决 我们重新定义一个结果数组k来储存结果,然后再设定i,j两个指针分别指向原数组的开头以及结尾然后这样遍历下去
每次开始就先i,j俩指针比较,然后把较大的放入结果数组,然后结果数组游标--,相应的i++或者j--;
#3上代码
class Solution
{
public:
vector<int> sortedSquares(vector<int> &nums)
{
//使用双指针的方法来进行解决
int k = nums.size() - 1;
vector<int> result(nums.size(), 0);
for (int i = 0,j = nums.size() - 1; i <= j;) //这里还是要注意<=的细节
{
if (nums[i]*nums[i] < nums[j]*nums[j])
{
result[k--] = nums[j]*nums[j];
/* code */
j--;
}
else
{
result[k--] = nums[i]*nums[i];
i++;
}
}
return result;
}
};