LeetCode #977 Squares of a Sorted Array 有序数组的平方

977 Squares of a Sorted Array 有序数组的平方

Description:
Given an array of integers A sorted in non-decreasing order, return an array of the squares of each number, also in sorted non-decreasing order.

Example:

Example 1:

Input: [-4,-1,0,3,10]
Output: [0,1,9,16,100]

Example 2:

Input: [-7,-3,2,3,11]
Output: [4,9,9,49,121]

Note:

1 <= A.length <= 10000
-10000 <= A[i] <= 10000
A is sorted in non-decreasing order.

题目描述:
给定一个按非递减顺序排序的整数数组 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 已按非递减顺序排序。

思路:

  1. 直接原地平方之后再排序
    时间复杂度O(nlgn), 空间复杂度O(1)
  2. 双指针法, 由于原数组已经有序, 依次从后往前添加平方值较大的元素即可
    时间复杂度O(n), 空间复杂度O(1)

代码:
C++:

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

Java:

class Solution {
    public int[] sortedSquares(int[] A) {
        int i = 0, j = A.length - 1, k = A.length - 1, result[] = new int[A.length];
        while (i <= j) {
            if (A[i] * A[i] < A[j] * A[j]) result[k--] = A[j] * A[j--];
            else result[k--] = A[i] * A[i++];
        }
        return result;
    }
}

Python:

class Solution:
    def sortedSquares(self, A: List[int]) -> List[int]:
        return sorted((i ** 2 for i in A))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,486评论 0 10
  • 题目描述 Given an array of integers A sorted in non-decreasin...
    Mereder阅读 147评论 0 0
  • http://spark.apache.org/docs/latest/api/python/index.html...
    mpro阅读 6,151评论 0 4
  • 我今年30了 我感觉我老了 头发稀疏了 稀疏的跟我的眼光似的 发际线退了 退到我焦虑的最后角落 四季走过 我也就觉...
    张大花是个男生阅读 234评论 0 0
  • 第五章痛苦的药浴 小山自从修炼了《气动乾坤》,就如鱼得水,修为大进。没过多长时间,小山就惊人的突破了练气五层。 这...
    易可风阅读 327评论 0 2