【題目描述】
給定一個按非遞減順序排序的整數(shù)數(shù)組 A瘩蚪,返回每個數(shù)字的平方組成的新數(shù)組稿黍,要求也按非遞減順序排序。
【示例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险胰、可以把每個元素平方后 使用系統(tǒng)API sort矿筝;
2、使用左右雙指針來遍歷窖维,當(dāng)左右指針相遇時遍歷完畢陈辱;
3、左右指針?biāo)鶎?yīng)的元素平方作對比沛贪,大的加到新建數(shù)組的最后index;
4水评、遍歷完畢 返回數(shù)組;
Swift代碼實現(xiàn)
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
}