算法珠玑——双指针

算法珠玑——双指针

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;
    }
};

这个代码仍没有极致优化,但是先放在这里以供参考。

posted @ 2021-12-01 21:36  千心  阅读(39)  评论(0)    收藏  举报