leetcode題解——977.有序數組的平方

給定一個按非遞減順序排序的整數數組 A,返回每個數字的平方組成的新數組,要求也按非遞減順序排序。

示例 1:
輸入:[-4,-1,0,3,10]
輸出:[0,1,9,16,100]
示例 2:
輸入:[-7,-3,2,3,11]
輸出:[4,9,9,49,121]


提示:


    1 <= A.length <= 10000

    -10000 <= A[i] <= 10000

    A 已按非遞減順序排序。



解題思路:

    這道題可以通過兩個遊標的方式,一前一後來對數組元素大小進行判斷,然後看是否需要交換位置



C++

class Solution {
public:
    vector<int> sortedSquares(vector<int>& A) {
        int len = A.size();
        vector<int> ret(len);
        int i = 0;
        int j = len - 1;
        
        if (len == 0)
            return {};
            
        if (i == j)
            return {A[0] * A[0]};
        
        while(i != j) {
            if (abs(A[i]) > abs(A[j])) {
                ret[len-1] = A[i] * A[i];
                i++;
            }
            else {
                ret[len-1] = A[j] * A[j];
                j--;
            }
            
            if (i == j)
                ret[0] = A[i] * A[i];
            
            len--;
        }
        
        
        return ret;
    }
};



Python

class Solution:
    def sortedSquares(self, A: List[int]) -> List[int]:
        ret = []
        i = 0
        j = len(A) - 1
        while i<=j:
            if -A[i] > A[j]:
                ret.append(A[i]*A[i])
                i = i + 1
            else:
                ret.append(A[j]*A[j])
                j = j - 1
            
        return ret

        

                



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