每日一算 Leetcode 977. 有序數組的平方

// C++
/*
給定一個按非遞減順序排序的整數數組 A,返回每個數字的平方組成的新數組,要求也按非遞減順序排序。
eg1:
輸入:[-4,-1,0,3,10]
輸出:[0,1,9,16,100]
eg2:
輸入:[-7,-3,2,3,11]
輸出:[4,9,9,49,121]
提示:
1 <= A.length <= 10000
-10000 <= A[i] <= 10000
**A 已按非遞減順序排序。**
*/

class Solution {
public:
    vector<int> sortedSquares(vector<int>& A) {
        int size =  A.size();
        vector<int> res(size);
        int j = size - 1;
        int i = 0;
        // 要保證條件
        while(i <= j)
        {
            // A[i]取反,和A[j]進行比較
            if(-A[i] < A[j])
            {
                res[j-i] = A[j] * A[j];
                j--;
                continue;
            }
            else{
                res[j-i] = A[i] * A[i];
                i++;
            }
        }
        return res;
    }   
};

題目中的原有數組已經按照非遞減順序排序,這一點非常關鍵。否則就只能還要按照一般排序進行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章