-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathsolution.cpp
44 lines (42 loc) · 1.01 KB
/
solution.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* 132 / 132 test cases passed
* Status: Accepted
* Runtime: 72 ms
*/
class Solution {
public:
vector<int> sortedSquares(vector<int>& A) {
int left = 0, right = A.size() - 1, idx = A.size() - 1;
vector<int> ans ( A.size() );
while ( left <= right ) {
if ( - A[left] < A[right] ) {
ans[ idx -- ] = A[right] * A[ right -- ];
} else {
ans[ idx -- ] = A[left] * A[ left ++ ];
}
}
return ans;
}
};
/**
* 132 / 132 test cases passed
* Status: Accepted
* Runtime: 60 ms
*/
class Solution2 {
public:
vector<int> sortedSquares(vector<int>& A) {
int sz = A.size();
vector<int> ans ( sz );
for ( int l = 0, r = sz - 1, idx = sz - 1; l <= r; -- idx ) {
if ( - A[l] < A[r] ) {
ans[idx] = A[r] * A[r];
-- r;
} else {
ans[idx] = A[l] * A[l];
++ l;
}
}
return ans;
}
};