您的位置:首页 > 其它

leetcode题解——977.有序数组的平方

2019-06-20 22:28 561 查看

给定一个按非递减顺序排序的整数数组 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

        

                



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: