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

【题目描述】
给定一个按非递减顺序排序的整数数组 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、可以把每个元素平方后 使用系统API sort;
2、使用左右双指针来遍历,当左右指针相遇时遍历完毕;
3、左右指针所对应的元素平方作对比,大的加到新建数组的最后index;
4、遍历完毕 返回数组;

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
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容