977. 有序数组的平方

作者: 1江春水 | 来源:发表于2019-07-16 15:31 被阅读2次

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

    【Swift代码实现】

        func sortedSquares(_ A: [Int]) -> [Int] {
            var end = A.count-1
            var arr = [Int].init(repeating: 0, count: A.count)
            var l = 0
            var r = A.count-1
            while l<r {
                if (A[l]*A[l] > A[r]*A[r]) {
                    arr[end] = A[l]*A[l]
                    end-=1
                    l+=1
                } else {
                    arr[end] = A[r]*A[r]
                    end-=1
                    r-=1
                }
            }
            arr[0] = A[l]*A[l]
            return arr
        }
    

    思路:
    1、可以把每个元素平方后 使用系统API sort;
    2、使用左右双指针来遍历,当左右指针相遇时遍历完毕;
    3、左右指针所对应的元素平方作对比,大的加到新建数组的最后index;
    4、遍历完毕 返回数组;

    相关文章

      网友评论

        本文标题:977. 有序数组的平方

        本文链接:https://www.haomeiwen.com/subject/hzltlctx.html