File tree Expand file tree Collapse file tree 1 file changed +36
-1
lines changed Expand file tree Collapse file tree 1 file changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -22,8 +22,43 @@ class Solution {
22
22
23
23
// Time: O(n)
24
24
// Space: O(1)
25
- // array, implementation
25
+ // generator
26
26
class Solution2 {
27
+ public:
28
+ vector<int > rearrangeArray (vector<int >& nums) {
29
+ int pos = 0 , neg = 0 ;
30
+ auto next_pos = [&nums, &pos]() {
31
+ for (; pos < size (nums); ++pos) {
32
+ if (nums[pos] > 0 ) {
33
+ return nums[pos++];
34
+ }
35
+ }
36
+ return -1 ;
37
+ };
38
+ auto next_neg = [&nums, &neg]() {
39
+ for (; neg < size (nums); ++neg) {
40
+ if (nums[neg] < 0 ) {
41
+ return nums[neg++];
42
+ }
43
+ }
44
+ return -1 ;
45
+ };
46
+ vector<int > result;
47
+ for (int i = 0 ; i < size (nums); ++i) {
48
+ if (i % 2 == 0 ) {
49
+ result.emplace_back (next_pos ());
50
+ } else {
51
+ result.emplace_back (next_neg ());
52
+ }
53
+ }
54
+ return result;
55
+ }
56
+ };
57
+
58
+ // Time: O(n)
59
+ // Space: O(1)
60
+ // array, implementation
61
+ class Solution3 {
27
62
public:
28
63
vector<int > rearrangeArray (vector<int >& nums) {
29
64
vector<int > pos, neg;
You can’t perform that action at this time.
0 commit comments