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