给定一个数组A(单调递增),将A中的每个数进行平方后再进行排序,返回最后排序的结果。
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本身有序这个条件就没有用处了。
既然题目给出这个条件,那么想必是想让我们使用比O(nlogn)更优的方法来解题。
由于数组本身有序,我们想到用双指针来判断,例如对于数组 [-7,-3,2,3,11]
,平方后最大的数一定会在负数中的最小值
(-7)和正数中的最大值
(11)中产生,然后第二大的数会在负数中的最小值
(-7)和正数中的第二大值
(3)中产生,依次类推。
1 | class Solution(object): |