two pointer O(n) time O(1) space
跟360. Sort Transformed Array不完全一样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Solution { public: vector<int> sortedSquares(vector<int>& A) { int n = size(A); vector<int> res(n); for (int l = 0, r = n - 1, i = n - 1; l <= r; --i) { if (abs(A[l]) < abs(A[r])) { res[i] = A[r] * A[r]; --r; } else { res[i] = A[l] * A[l]; ++l; } } return res; } };
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Solution { public: vector<int> sortedSquares(vector<int>& A) { vector<int> res; int n = A.size(); for (int l = 0, r = n - 1; l <= r;) { if (abs(A[l]) < abs(A[r])) { res.push_back(A[r] * A[r]); --r; } else { res.push_back(A[l] * A[l]); ++l; } } return vector<int>(rbegin(res), rend(res)); } };
|