算法珠玑——双指针
算法珠玑——双指针
https://leetcode-cn.com/problems/squares-of-a-sorted-array
不是最好的结果,平均都是这样。用例太少。

class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
vector<int> ans(nums.size());
// 基本情况1:双指针核心 a1
int left = 0;
int right = nums.size()-1;
// 基本情况2:另一个数组的遍历辅助 b1
int pos = right;
// 终止情况
while(left <= right)
{
// 归纳步骤1:双指针核心 递归式 a(n) = a(n-1)+1
if (nums[left] > -nums[right])
{
ans[pos] = nums[right]*nums[right];
--right;
}
else
{
ans[pos] = nums[left]*nums[left];
++left;
}
// 归纳步骤2:遍历辅助 递归式 b(n) = b(n-1)+1
--pos;
}
// 返回 b(n) 结果
return ans;
}
};
这个代码仍没有极致优化,但是先放在这里以供参考。

浙公网安备 33010602011771号