Skip to content

Commit d7e858f

Browse files
authored
Update rearrange-array-elements-by-sign.cpp
1 parent 040a89a commit d7e858f

File tree

1 file changed

+8
-22
lines changed

1 file changed

+8
-22
lines changed

C++/rearrange-array-elements-by-sign.cpp

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,15 @@
55
class Solution {
66
public:
77
vector<int> rearrangeArray(vector<int>& nums) {
8-
int pos = 0, neg = 0;
9-
auto next_pos = [&nums, &pos]() {
10-
for (; pos < size(nums); ++pos) {
11-
if (nums[pos] > 0) {
12-
return nums[pos++];
13-
}
14-
}
15-
return -1;
16-
};
17-
auto next_neg = [&nums, &neg]() {
18-
for (; neg < size(nums); ++neg) {
19-
if (nums[neg] < 0) {
20-
return nums[neg++];
21-
}
22-
}
23-
return -1;
24-
};
25-
vector<int> result;
26-
for (int i = 0; i < size(nums); ++i) {
27-
if (i % 2 == 0) {
28-
result.emplace_back(next_pos());
8+
int pos = 0, neg = 1;
9+
vector<int> result(size(nums));
10+
for (const auto& x : nums) {
11+
if (x > 0) {
12+
result[pos] = x;
13+
pos += 2;
2914
} else {
30-
result.emplace_back(next_neg());
15+
result[neg] = x;
16+
neg += 2;
3117
}
3218
}
3319
return result;

0 commit comments

Comments
 (0)